#include<cstdio>
#include<cstring>
#include<iostream>
using namespace std;
char str[100000];
char s[200000];
int r[200000];
int main()
{
memset(s,0,sizeof(s));
memset(r,0,sizeof(r));
scanf("%s",str);
int len=strlen(str);
int i;
for(i=0;i<len;i++)
{
s[i*2]='#';
s[i*2+1]=str[i];
}
s[i*2]='#';
s[i*2+1]='\0';
len=strlen(s);
int maxright=0;
int pos=0;
int ans=0;
for(int i=1;i<len;i++)
{
if(i<maxright)
r[i]=min(maxright-i,r[2*pos-i]);
else
r[i]=1;
while(s[i-r[i]]==s[i+r[i]]&&i-r[i]>=0)
r[i]++;
if(i+r[i]-1>maxright)
{
maxright=i+r[i]-1;
pos=i;
}
ans=max(ans,r[i]);
}
printf("%d",ans-1);
return 0;
}