#include using namespace std; constexpr int maxn = 1000 * 1000 + 5; int r[maxn * 2]; void manacher(const string &s, int n, int * r) { for(int i = 0, m = 0, k = 0, p = 0; i < 2 * n - 1; m = i++ - 1) { while (p < k and i / 2 + r[m] != k) r[i++] = min(r[m--], (k + 1 - p++) / 2); while (k + 1 < n and p > 0 and s[k + 1] == s[p - 1]) k++, p--; r[i] = (k + 1 - p++) / 2; } } int main() { ios::sync_with_stdio(false); cin.tie(nullptr); int n; cin >> n; string s; cin >> s; manacher(s, n, r); int res = n; for(int i = 0; i < 2 * n - 1; i++) { if(i % 2 == 0) { int pos = i / 2; if(n - pos == r[i] + 1) { res = min(res, n - (r[i] * 2 + 1)); } } else { int pos = i / 2; if(n - pos == r[i] + 1) { res = min(res, n - (r[i] * 2)); } } } cout << res << "\n"; }