rt
// Problem: P3805 【模板】manacher 算法
// Contest: Luogu
// URL: https://www.luogu.com.cn/problem/P3805
// Memory Limit: 512 MB
// Time Limit: 500000 ms
//
// Powered by CP Editor (https://cpeditor.org)
#include<bits/stdc++.h>
using namespace std;
char dt[22000002];
int p[22000002];
int cnt;
inline void get(){
char c=getchar();
dt[0]='~';
dt[1]='*';
cnt=1;
while(c<'a'||c>'z') c=getchar();
while(c>='a'&&c<='z') dt[++cnt]=c,dt[++cnt]='*',c=getchar();
}
int main(){
get();
// cout<<dt;
int ans=0;
for(int i=1;i<cnt;++i){
int r=0,mid=0;
if(i<r+mid){
p[i]=min(p[2*mid-i],r-i);
}
else p[i]=1;
while(dt[i-p[i]]==dt[i+p[i]]){
p[i]++;
}
if(i+p[i]>r){
r=i+p[i];
mid=i;
}
ans=max(ans,p[i]-1);
}
cout<<ans;
return 0;
}