#include using namespace std; #define rep(i, a, b) for(int i = a;i < (b);++i) #define sz(x) (int)(x).size() typedef vector vi; void manacher(const string &s) { int n = sz(s); vi p[2] = {vi(n+1), vi(n)}; rep(z, 0, 2) for (int i=0,l=0,r=0;i=1 && R+1 < n && s[L-1] == s[R+1]) p[z][i]++, L--, R++; if(R>r) l = L, r = R; } int minimum = s.size(); for (int i = 0;i < p[0].size();i++) { if (i + p[0][i] >= p[0].size() - 1) { minimum = min(n - p[0][i] * 2, minimum); } } for (int i = 0;i < p[1].size();i++) { if (i + p[1][i] >= p[1].size() - 1) { minimum = min(n - p[1][i] * 2 - 1, minimum); } } cout << minimum << endl; } int main() { ios_base::sync_with_stdio(0); int n; cin >> n; string s; cin>> s; manacher(s); return 0; }