#include <iostream>
#include <vector>
using namespace std;
int main() {
string s;
cin >> s;
int n = s.length();
//дублируем строку, чтобы иметь возможность просмотреть все циклические перестановки
s += s;
const int p = 31;
vector <long long> p_pow (2*n); //вектор степеней числа p
p_pow[0] = 1;
for (int i = 1; i < 2*n; ++i) p_pow[i] = p * p_pow[i-1];
long long P1 = 0, P2 = 0;
for (int i = 0; i < n; ++i) {
P1 += (s[i] - 'a' + 1) * p_pow[i];
P2 += (s[n - i - 1] - 'a' + 1) * p_pow[i];
}
if (P1 == P2) {
bool check = true;
for (int i = 0; i < n; ++i)
if (s[i] != s[n - i - 1]) check = false;
if (check) {
cout << "yes";
return 0;
}
}
for (int i = 0; i < n; ++i) {
P1 += (s[i+n] - 'a' + 1)*p_pow[i+n] - (s[i] - 'a' + 1)*p_pow[i];
P2 = (P2 - (s[i] - 'a' + 1)*p_pow[n + i - 1]) * p_pow[2] + (s[i+n]-'a' + 1) * p_pow[i+1];
if (P1 == P2) {
bool check = true;
for (int j = i + 1; j < i + 1 + n; ++j)
if (s[j] != s[2*i + 1 + n - j]) check = false;
if (check) {
cout << "yes";
return 0;
}
}
}
cout << "no";
return 0;
}
I2luY2x1ZGUgPGlvc3RyZWFtPgojaW5jbHVkZSA8dmVjdG9yPgp1c2luZyBuYW1lc3BhY2Ugc3RkOwoKaW50IG1haW4oKSB7CiAgICBzdHJpbmcgczsKICAgIGNpbiA+PiBzOwogICAgaW50IG4gPSBzLmxlbmd0aCgpOwogICAgLy/QtNGD0LHQu9C40YDRg9C10Lwg0YHRgtGA0L7QutGDLCDRh9GC0L7QsdGLINC40LzQtdGC0Ywg0LLQvtC30LzQvtC20L3QvtGB0YLRjCDQv9GA0L7RgdC80L7RgtGA0LXRgtGMINCy0YHQtSDRhtC40LrQu9C40YfQtdGB0LrQuNC1INC/0LXRgNC10YHRgtCw0L3QvtCy0LrQuAogICAgcyArPSBzOwogICAgY29uc3QgaW50IHAgPSAzMTsKICAgIHZlY3RvciA8bG9uZyBsb25nPiBwX3BvdyAoMipuKTsgLy/QstC10LrRgtC+0YAg0YHRgtC10L/QtdC90LXQuSDRh9C40YHQu9CwIHAKICAgIHBfcG93WzBdID0gMTsKICAgIGZvciAoaW50IGkgPSAxOyBpIDwgMipuOyArK2kpIHBfcG93W2ldID0gcCAqIHBfcG93W2ktMV07CiAgICBsb25nIGxvbmcgUDEgPSAwLCBQMiA9IDA7CiAgICBmb3IgKGludCBpID0gMDsgaSA8IG47ICsraSkgewogICAgICAgIFAxICs9IChzW2ldIC0gJ2EnICsgMSkgKiBwX3Bvd1tpXTsKICAgICAgICBQMiArPSAoc1tuIC0gaSAtIDFdIC0gJ2EnICsgMSkgKiBwX3Bvd1tpXTsKICAgIH0KICAgIGlmIChQMSA9PSBQMikgewogICAgICAgIGJvb2wgY2hlY2sgPSB0cnVlOwogICAgICAgIGZvciAoaW50IGkgPSAwOyBpIDwgbjsgKytpKQogICAgICAgICAgICBpZiAoc1tpXSAhPSBzW24gLSBpIC0gMV0pIGNoZWNrID0gZmFsc2U7CiAgICAgICAgaWYgKGNoZWNrKSB7CiAgICAgICAgICAgIGNvdXQgPDwgInllcyI7CiAgICAgICAgICAgIHJldHVybiAwOwogICAgICAgIH0KICAgIH0KICAgIGZvciAoaW50IGkgPSAwOyBpIDwgbjsgKytpKSB7CiAgICAgICAgUDEgKz0gKHNbaStuXSAtICdhJyArIDEpKnBfcG93W2krbl0gLSAoc1tpXSAtICdhJyArIDEpKnBfcG93W2ldOwogICAgICAgIFAyID0gKFAyIC0gKHNbaV0gLSAnYScgKyAxKSpwX3Bvd1tuICsgaSAtIDFdKSAqIHBfcG93WzJdICsgKHNbaStuXS0nYScgKyAxKSAqIHBfcG93W2krMV07CiAgICAgICAgaWYgKFAxID09IFAyKSB7CiAgICAgICAgICAgIGJvb2wgY2hlY2sgPSB0cnVlOwogICAgICAgICAgICBmb3IgKGludCBqID0gaSArIDE7IGogPCBpICsgMSArIG47ICsraikKICAgICAgICAgICAgICAgIGlmIChzW2pdICE9IHNbMippICsgMSArIG4gLSBqXSkgY2hlY2sgPSBmYWxzZTsKICAgICAgICAgICAgaWYgKGNoZWNrKSB7CiAgICAgICAgICAgICAgICBjb3V0IDw8ICJ5ZXMiOwogICAgICAgICAgICAgICAgcmV0dXJuIDA7CiAgICAgICAgICAgIH0KICAgICAgICB9CiAgICB9CiAgICBjb3V0IDw8ICJubyI7CiAgICByZXR1cm4gMDsKfQo=