#include #include #include #include using namespace std; const int kMaxN = 4e6 + 10; char s[kMaxN], s_reverse[kMaxN]; int len = 0; int Next[kMaxN]; int main() { #ifdef local freopen("pro.in", "r", stdin); #endif scanf("%s", s + 1); len = strlen(s + 1); for (int i = 1; i <= len; i++) s_reverse[i] = s[len + 1 - i]; for (int i = 2, j = 0; i <= len; i++) { while (j > 0 && s_reverse[i] != s_reverse[j + 1]) j = Next[j]; if (s_reverse[i] == s_reverse[j + 1]) j++; Next[i] = j; } int p = 0; for (int i = 1; i <= len; i++) { while (p > 0 && s[i] != s_reverse[p + 1]) p = Next[p]; if (s[i] == s_reverse[p + 1]) p++; } printf("%d\n", len - p); return 0; }