#include <bits/stdc++.h>
using namespace std;
const int maxn = 1e5 + 1;
int s[maxn], to[maxn][26], len[maxn], link[maxn];
int n, sz, last;
void init()
{
s[n++] = -1;
link[0] = 1;
len[1] = -1;
sz = 2;
}
int get_link(int v)
{
while(s[n - len[v] - 2] != s[n - 1]) v = link[v];
return v;
}
int add_letter(char c)
{
s[n++] = c -= 'a';
last = get_link(last);
if(!to[last][c])
{
len[sz] = len[last] + 2;
link[sz] = to[get_link(link[last])][c];
to[last][c] = sz++;
}
last = to[last][c];
return len[last];
}
int main()
{
ios::sync_with_stdio(0);
cin.tie(0);
init();
int n;
cin >> n;
string s;
cin >> s;
int ans = 0;
for(auto c: s)
ans = max(ans, add_letter(c));
cout << ans;
return 0;
}
I2luY2x1ZGUgPGJpdHMvc3RkYysrLmg+Cgp1c2luZyBuYW1lc3BhY2Ugc3RkOwoKY29uc3QgaW50IG1heG4gPSAxZTUgKyAxOwoKaW50IHNbbWF4bl0sIHRvW21heG5dWzI2XSwgbGVuW21heG5dLCBsaW5rW21heG5dOwppbnQgbiwgc3osIGxhc3Q7Cgp2b2lkIGluaXQoKQp7CiAgICBzW24rK10gPSAtMTsKICAgIGxpbmtbMF0gPSAxOwogICAgbGVuWzFdID0gLTE7CiAgICBzeiA9IDI7Cn0KCmludCBnZXRfbGluayhpbnQgdikKewogICAgd2hpbGUoc1tuIC0gbGVuW3ZdIC0gMl0gIT0gc1tuIC0gMV0pIHYgPSBsaW5rW3ZdOwogICAgcmV0dXJuIHY7Cn0KCmludCBhZGRfbGV0dGVyKGNoYXIgYykKewogICAgc1tuKytdID0gYyAtPSAnYSc7CiAgICBsYXN0ID0gZ2V0X2xpbmsobGFzdCk7CiAgICBpZighdG9bbGFzdF1bY10pCiAgICB7CiAgICAgICAgbGVuW3N6XSA9IGxlbltsYXN0XSArIDI7CiAgICAgICAgbGlua1tzel0gPSB0b1tnZXRfbGluayhsaW5rW2xhc3RdKV1bY107CiAgICAgICAgdG9bbGFzdF1bY10gPSBzeisrOwogICAgfQogICAgbGFzdCA9IHRvW2xhc3RdW2NdOwogICAgcmV0dXJuIGxlbltsYXN0XTsKfQoKaW50IG1haW4oKQp7CiAgICBpb3M6OnN5bmNfd2l0aF9zdGRpbygwKTsKICAgIGNpbi50aWUoMCk7CiAgICBpbml0KCk7CiAgICBpbnQgbjsKICAgIGNpbiA+PiBuOwogICAgc3RyaW5nIHM7CiAgICBjaW4gPj4gczsKICAgIGludCBhbnMgPSAwOwogICAgZm9yKGF1dG8gYzogcykKICAgICAgICBhbnMgPSBtYXgoYW5zLCBhZGRfbGV0dGVyKGMpKTsKICAgIGNvdXQgPDwgYW5zOwogICAgcmV0dXJuIDA7Cn0K