#include using namespace std; void manacher(const char* w, int n, int *p, int sh) { int g = 0; p[0] = 1 - sh; for (int i=1;i=0?max(min(p[2*g-i],p[g]+g-i),0):0; while(i>=p[i]+sh && i+p[i]> n >> s; vector odd(n+1), even(n+1); manacher(s.data(), n, odd.data(), 0); manacher(s.data(), n, even.data(), 1); int best = 1; for (int i = 2; i <= n; ++i) { const int half = i / 2; if (i % 2 == 1 && odd[n - 1 - half] == half + 1) best = i; else if(i%2 == 0 && even[n-half] == half) best = i; } cout << n - best << '\n'; }