#include <bits/stdc++.h>
using namespace std;
const int maxN=11000000+10;
char s[maxN],ss[maxN<<1];
int R[maxN<<1];
int manacher(char *S,int Len) {
int Max=0,Mid=0;
for(int i=0;i<Len;i++) {
if(Max<i) R[i]=1;
else R[i]=min(R[(Mid<<1)-i],Max-i);
while(i+R[i]<Len && i-R[i]>=0 && S[i+R[i]]==S[i-R[i]]) R[i]++;
if(Max<i+R[i]-1) Max=i+R[i]-1,Mid=i;
}
int ret=0;
for(int i=0;i<Len;i++) ret=max(ret,R[i]); ret--;
return ret;
}
int main() {
scanf("%s",s);
int N=0,n=strlen(s);
for(int i=0;i<n;i++) {
ss[N++]='#',ss[N++]=s[i];
}
ss[N++]='#',ss[N]='\0';
printf("%d\n",manacher(ss,N));
return 0;
}