#include<stdio.h>
char s[30000000];
int size[30000000];
int main(){
int l=1;
s[0]='#';
while(~scanf("%c",&s[l++]))
s[l++]='#';
l-=3;
//printf("%d\n",l);
int mirror,max=0,center=0,i,j;
for(i=0;i<l;i++){
if(i<max){
mirror=2*center-i;
if(max<=i+size[mirror])
j=max-i+1;
else{
size[i]=size[mirror];
continue;
}
}else j=1;
while(i-j>-1&&i+j<l&&s[i-j]==s[i+j])
j++;
size[i]=--j;
if(i+j>max){
max=i+j;
center=i;
}
}
/*
for(i=0;i<l;i++)
printf("%d ",size[i]);
printf("\n");
*/
max=0;
for(i=0;i<l;i++){
if(size[i]>max)
max=size[i];
}
printf("%d\n",max);
return 0;
}