/// Manacher by muoii
/// vn.spoj.com/problems/PALINY/
#include <bits/stdc++.h>
using namespace std;
#define tag "spoj"
#define maxn 100007
#define oo 1000000007
#define mid ((l+r)>>1)
#define meset(a,x) memset(a,x,sizeof(a))
#define loop(x) for(int LoOpEr=1;LoOpEr<=x;LoOpEr++)
///>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
void manacher(const string &str,vector<int> &mana)
{
int n=2*str.size()+1;
string s=string(n,'#');
for(int i=1;i<n;i+=2) s[i]=str[i/2];
mana.resize(n);
int l=0,r=0;
for(int i=0;i<n;i++)
{
mana[i]=(i<r)?min(r-i,mana[2*l-i]):0;
while(s[i-mana[i]-1]==s[i+mana[i]+1]) ++mana[i];
if(i+mana[i]>r) r=(l=i)+mana[i];
}
}
bool palin(const int &l,const int &r,const vector<int> &mana)
{
return (l<r)?0:mana[l+r+1]>=(r-l+1);
}
int main()
{
#ifdef dmdd
freopen(tag".inp","r",stdin); freopen(tag".out","w",stdout);
#endif //dmdd
ios_base::sync_with_stdio(0); cin.tie(0); cout.tie(0);
int n; string s;vector<int> f;
cin>>n>>s;
manacher(s,f);
cout<<*max_element(f.begin(),f.end());
return 0;
}
Ly8vIE1hbmFjaGVyIGJ5IG11b2lpCgovLy8gdm4uc3Bvai5jb20vcHJvYmxlbXMvUEFMSU5ZLwojaW5jbHVkZSA8Yml0cy9zdGRjKysuaD4KdXNpbmcgbmFtZXNwYWNlIHN0ZDsKI2RlZmluZSB0YWcgInNwb2oiCiNkZWZpbmUgbWF4biAxMDAwMDcKI2RlZmluZSBvbyAxMDAwMDAwMDA3CiNkZWZpbmUgbWlkICgobCtyKT4+MSkKI2RlZmluZSBtZXNldChhLHgpIG1lbXNldChhLHgsc2l6ZW9mKGEpKQojZGVmaW5lIGxvb3AoeCkgZm9yKGludCBMb09wRXI9MTtMb09wRXI8PXg7TG9PcEVyKyspCi8vLz4+Pj4+Pj4+Pj4+Pj4+Pj4+Pj4+Pj4+Pj4+Pj4+Pj4+Pj4+Pj4+Pj4+Pj4+Pj4+Pj4+Pj4+Pj4+Pj4+Pj4+Pj4+Pj4+Pj4+Pj4+Pj4+Pj4+Pj4+Pj4+Pj4+Pj4+Pj4+Pj4+Pj4+Pj4+Pj4+Pj4+Pj4+Pj4+Pj4+Pj4+Pj4+Pj4+Pj4+Pj4+Pj4+Pj4+Pj4+Pj4+Pj4+Pj4+Pj4+Pj4+Pj4+Pj4+Pj4+Pj4+Pj4+Pj4+Pj4+Pj4+Pj4+Pj4+Pj4+Pj4+Pj4+Pj4+Pj4+Pj4+Pj4+Pj4Kdm9pZCBtYW5hY2hlcihjb25zdCBzdHJpbmcgJnN0cix2ZWN0b3I8aW50PiAmbWFuYSkKewogICAgaW50IG49MipzdHIuc2l6ZSgpKzE7CiAgICBzdHJpbmcgcz1zdHJpbmcobiwnIycpOwogICAgZm9yKGludCBpPTE7aTxuO2krPTIpIHNbaV09c3RyW2kvMl07CgogICAgbWFuYS5yZXNpemUobik7CiAgICBpbnQgbD0wLHI9MDsKICAgIGZvcihpbnQgaT0wO2k8bjtpKyspCiAgICB7CiAgICAgICAgbWFuYVtpXT0oaTxyKT9taW4oci1pLG1hbmFbMipsLWldKTowOwogICAgICAgIHdoaWxlKHNbaS1tYW5hW2ldLTFdPT1zW2krbWFuYVtpXSsxXSkgKyttYW5hW2ldOwogICAgICAgIGlmKGkrbWFuYVtpXT5yKSByPShsPWkpK21hbmFbaV07CiAgICB9Cn0KCmJvb2wgcGFsaW4oY29uc3QgaW50ICZsLGNvbnN0IGludCAmcixjb25zdCB2ZWN0b3I8aW50PiAmbWFuYSkKewogICAgcmV0dXJuIChsPHIpPzA6bWFuYVtsK3IrMV0+PShyLWwrMSk7Cn0KCmludCBtYWluKCkKewogICAgI2lmZGVmIGRtZGQKICAgIGZyZW9wZW4odGFnIi5pbnAiLCJyIixzdGRpbik7IGZyZW9wZW4odGFnIi5vdXQiLCJ3IixzdGRvdXQpOwogICAgI2VuZGlmIC8vZG1kZAogICAgaW9zX2Jhc2U6OnN5bmNfd2l0aF9zdGRpbygwKTsgY2luLnRpZSgwKTsgY291dC50aWUoMCk7CgogICAgaW50IG47IHN0cmluZyBzO3ZlY3RvcjxpbnQ+IGY7CiAgICBjaW4+Pm4+PnM7CiAgICBtYW5hY2hlcihzLGYpOwoKICAgIGNvdXQ8PCptYXhfZWxlbWVudChmLmJlZ2luKCksZi5lbmQoKSk7CiAgICByZXR1cm4gMDsKfQo=