#include <bits/stdc++.h>
using namespace std;
#define endl '\n'
#define int long long
#define ii pair<int,int>
const int N = 5e5+5, M = 2e3+5, inf = 1e18, MOD = 1e9+7;
int test, n, m, x, y, res, k, cnt, sum;
int a[N], b[N], h1[N], h2[N], p[N];
signed main(){
ios_base::sync_with_stdio(0); cin.tie(0); cout.tie(0);
string s1; char s[N];
cin >> n;
for (int i = 1; i <= n; ++i) cin >> s[i], h1[i] = (h1[i - 1] * 31 + s[i] - 'a' + 1) % MOD;
for (int i = n; i > 0; --i) h2[i] = (h2[i + 1] * 31 + s[i] - 'a' + 1) % MOD;
res = 1;
p[0] = 1;
for (int i = 1; i <= n; ++i) p[i] = (p[i - 1] * 31) % MOD;
for (int i = 2; i < n; ++i) {
int d = 1, c = min(i - 1, n - i);
while (d <= c) {
int mid = (d + c) >> 1;
x = (h1[i + mid] - h1[i] * p[mid] + MOD * MOD) % MOD;
y = (h2[i - mid] - h2[i] * p[mid] + MOD * MOD) % MOD;
if (x == y) res = max(res, mid << 1 | 1), d = mid + 1;
else c = mid - 1;
}
if (s[i] == s[i + 1]) {
res = max(res, (int) 2);
if (i + 1 == n) continue;
d = 1; c = min(i - 1, n - i - 1);
while (d <= c) {
int mid = (d + c) >> 1;
x = (h1[i + mid + 1] - h1[i + 1] * p[mid] + MOD * MOD) % MOD;
y = (h2[i - mid] - h2[i] * p[mid] + MOD * MOD) % MOD;
if (x == y) res = max(res, mid * 2 + 2), d = mid + 1;
else c = mid - 1;
}
}
}
cout << res;
}
I2luY2x1ZGUgPGJpdHMvc3RkYysrLmg+CnVzaW5nIG5hbWVzcGFjZSBzdGQ7CiNkZWZpbmUgZW5kbCAnXG4nCiNkZWZpbmUgaW50IGxvbmcgbG9uZwojZGVmaW5lIGlpIHBhaXI8aW50LGludD4KY29uc3QgaW50IE4gPSA1ZTUrNSwgTSA9IDJlMys1LCBpbmYgPSAxZTE4LCBNT0QgPSAxZTkrNzsKaW50IHRlc3QsIG4sIG0sIHgsIHksIHJlcywgaywgY250LCBzdW07CmludCBhW05dLCBiW05dLCBoMVtOXSwgaDJbTl0sIHBbTl07CgpzaWduZWQgbWFpbigpewogICAgaW9zX2Jhc2U6OnN5bmNfd2l0aF9zdGRpbygwKTsgY2luLnRpZSgwKTsgY291dC50aWUoMCk7CiAgICBzdHJpbmcgczE7IGNoYXIgc1tOXTsKICAgIGNpbiA+PiBuOwogICAgZm9yIChpbnQgaSA9IDE7IGkgPD0gbjsgKytpKSBjaW4gPj4gc1tpXSwgaDFbaV0gPSAoaDFbaSAtIDFdICogMzEgKyBzW2ldIC0gJ2EnICsgMSkgJSBNT0Q7CiAgICBmb3IgKGludCBpID0gbjsgaSA+IDA7IC0taSkgaDJbaV0gPSAoaDJbaSArIDFdICogMzEgKyBzW2ldIC0gJ2EnICsgMSkgJSBNT0Q7CiAgICByZXMgPSAxOwogICAgcFswXSA9IDE7CiAgICBmb3IgKGludCBpID0gMTsgaSA8PSBuOyArK2kpIHBbaV0gPSAocFtpIC0gMV0gKiAzMSkgJSBNT0Q7CiAgICBmb3IgKGludCBpID0gMjsgaSA8IG47ICsraSkgewogICAgICAgIGludCBkID0gMSwgYyA9IG1pbihpIC0gMSwgbiAtIGkpOwogICAgICAgIHdoaWxlIChkIDw9IGMpIHsKICAgICAgICAgICAgaW50IG1pZCA9IChkICsgYykgPj4gMTsKICAgICAgICAgICAgeCA9IChoMVtpICsgbWlkXSAtIGgxW2ldICogcFttaWRdICsgTU9EICogTU9EKSAlIE1PRDsKICAgICAgICAgICAgeSA9IChoMltpIC0gbWlkXSAtIGgyW2ldICogcFttaWRdICsgTU9EICogTU9EKSAlIE1PRDsKICAgICAgICAgICAgaWYgKHggPT0geSkgcmVzID0gbWF4KHJlcywgbWlkIDw8IDEgfCAxKSwgZCA9IG1pZCArIDE7CiAgICAgICAgICAgIGVsc2UgYyA9IG1pZCAtIDE7CiAgICAgICAgfQogICAgICAgIGlmIChzW2ldID09IHNbaSArIDFdKSB7CiAgICAgICAgICAgIHJlcyA9IG1heChyZXMsIChpbnQpIDIpOwogICAgICAgICAgICBpZiAoaSArIDEgPT0gbikgY29udGludWU7CiAgICAgICAgICAgIGQgPSAxOyBjID0gbWluKGkgLSAxLCBuIC0gaSAtIDEpOwogICAgICAgICAgICB3aGlsZSAoZCA8PSBjKSB7CiAgICAgICAgICAgICAgICBpbnQgbWlkID0gKGQgKyBjKSA+PiAxOwogICAgICAgICAgICAgICAgeCA9IChoMVtpICsgbWlkICsgMV0gLSBoMVtpICsgMV0gKiBwW21pZF0gKyBNT0QgKiBNT0QpICUgTU9EOwogICAgICAgICAgICAgICAgeSA9IChoMltpIC0gbWlkXSAtIGgyW2ldICogcFttaWRdICsgTU9EICogTU9EKSAlIE1PRDsKICAgICAgICAgICAgICAgIGlmICh4ID09IHkpIHJlcyA9IG1heChyZXMsIG1pZCAqIDIgKyAyKSwgZCA9IG1pZCArIDE7CiAgICAgICAgICAgICAgICBlbHNlIGMgPSBtaWQgLSAxOwogICAgICAgICAgICB9CiAgICAgICAgfQogICAgfQogICAgY291dCA8PCByZXM7Cn0K