#include <bits/stdc++.h>
#include <ext/algorithm>
#include <ext/numeric>
using namespace std;
using namespace __gnu_cxx;
#define endl '\n'
vector<int> manacher(const string &s)
{
int n = 2 * s.length();
vector<int> rad(n);
for (int i = 0, j = 0, k; i < n; i += k, j = max(j - k, 0))
{
for( ; i >= j && i + j + 1 < n
&& s[(i - j) / 2] == s[(i + j + 1) / 2]; ++j);
rad[i] = j;
for (k = 1; i >= k && rad[i] >= k
&& rad[i - k] != rad[i] - k; ++k)
rad[i + k] = min(rad[i - k], rad[i] - k);
}
return rad;
}
int main()
{
ios_base::sync_with_stdio(0);
cin.tie(0);
int n;
string s;
cin >> n >> s;
auto rad = manacher(s);
cout << *max_element(rad.begin(), rad.end()) << endl;
return 0;
}
I2luY2x1ZGUgPGJpdHMvc3RkYysrLmg+CiNpbmNsdWRlIDxleHQvYWxnb3JpdGhtPgojaW5jbHVkZSA8ZXh0L251bWVyaWM+Cgp1c2luZyBuYW1lc3BhY2Ugc3RkOwp1c2luZyBuYW1lc3BhY2UgX19nbnVfY3h4OwoKI2RlZmluZSBlbmRsICdcbicKCnZlY3RvcjxpbnQ+IG1hbmFjaGVyKGNvbnN0IHN0cmluZyAmcykKewoJaW50IG4gPSAyICogcy5sZW5ndGgoKTsKCXZlY3RvcjxpbnQ+IHJhZChuKTsKCglmb3IgKGludCBpID0gMCwgaiA9IDAsIGs7IGkgPCBuOyBpICs9IGssIGogPSBtYXgoaiAtIGssIDApKQoJewoJCWZvciggOyBpID49IGogJiYgaSArIGogKyAxIDwgbiAKCQkJJiYgc1soaSAtIGopIC8gMl0gPT0gc1soaSArIGogKyAxKSAvIDJdOyArK2opOwoKCQlyYWRbaV0gPSBqOwoKCQlmb3IgKGsgPSAxOyBpID49IGsgJiYgcmFkW2ldID49IGsgCgkJCSYmIHJhZFtpIC0ga10gIT0gcmFkW2ldIC0gazsgKytrKQoJCQlyYWRbaSArIGtdID0gbWluKHJhZFtpIC0ga10sIHJhZFtpXSAtIGspOwoJfQoKCXJldHVybiByYWQ7Cn0KCmludCBtYWluKCkKewoJaW9zX2Jhc2U6OnN5bmNfd2l0aF9zdGRpbygwKTsKCWNpbi50aWUoMCk7CgoJaW50IG47CglzdHJpbmcgczsKCWNpbiA+PiBuID4+IHM7CgoJYXV0byByYWQgPSBtYW5hY2hlcihzKTsKCWNvdXQgPDwgKm1heF9lbGVtZW50KHJhZC5iZWdpbigpLCByYWQuZW5kKCkpIDw8IGVuZGw7CgkKCXJldHVybiAwOwp9Cg==