#include<iostream>
#include<cstdio>
#include<algorithm>
#include<cstring>
#include<cmath>
int len_a;
const int maxn = 1.1e7+11;
char a[maxn],b[maxn<<1];
int p[maxn<<1];
void add_str(){
b[0]='^';
b[1]='#';
for(int i=0;i<len_a;i++){
b[i*2+2]=a[i];
b[i*2+3]='#';
}
b[len_a*2+2]='@';
}
int main(){
scanf("%s",a);
len_a=strlen(a);
add_str();
int r=0,mid=0;
int ans=-1;
int len_b=strlen(b);
for(int i=1;i<len_b;i++){
if(r>i){
p[i]=std::min(p[mid*2-i],r-mid+1);
}else{
p[i]=1;
}
while(b[i-p[i]]==b[i+p[i]]) ++p[i];
if(p[i]+i>r){
r=p[i]+i-1;
mid=i;
}
if(ans<p[i]) ans=p[i];
}
std:: cout<<ans-1;
return 0;
}