#include #include #include using namespace std; using ull = unsigned long long; int main() { ios::sync_with_stdio(false); int N; cin >> N; string s; cin >> s; reverse(s.begin(), s.end()); ull a = 0, b = 0; const ull M = 31415926535; ull Mh = 1; int m = 0; for(int i = 0; i < N; i++){ int x = s[i] - 'a'; a += Mh * x; Mh *= M; b *= M; b += x; //cerr << a << " " << b << "\n"; if(a == b) { m = max(m, i); } } cout << N - m - 1 <<"\n"; } /*int main() { string s; cin >> s; vector tomb(s.size()+1); s[0] = -1; for(int i = 0; i < N; i++) { int j = tomb[i]; while(j >= 0 && s[j] != s[i]) { j = tomb[i]; } s[i+1] = j + 1; } int o = 0; for(int i = 0; i < N; i++) { if (i > o || s[i] != s[o - i]) { } } }*/ /*const int MAXL = 4e5+5; int d[MAXL]; int main() { ios_base::sync_with_stdio(0); int N; cin >> N; string s; cin >> s; int maxc = N-1; int c = N-1; /// center d[N-1] = N; /// PT for(int i = N-2; i >= 0; i--) { while(2*c-i >= N && s[i] != s[2*c-i]) { if (2*c - i >= N) { maxc = c; } } } return 0; } */