#include<bits/stdc++.h>
using namespace std;
const int N = 110010;
char str[N], aim[N<<1];
int n;
int len[N*2];
void manacher()
{
memset(len, 0, sizeof(len));
aim[0] = '$'; aim[1] = '#';
int Maxid = 0;
int id = 0;
for(int i = 0, j = 2; i < n; i++){
aim[j++] = str[i];
aim[j++] = '#';
}
for(int i = 1; i <= n*2+1; i++)
{
if(i < Maxid)
len[i] = min(len[id*2-i], Maxid-i);
else len[i] = 1;
while(aim[i-len[i]] == aim[i+len[i]]) len[i]++;
if(i+len[i] > Maxid)
{
Maxid = i+len[i];
id = i;
}
}
}
int main()
{
while(~scanf("%s", str))
{
n = strlen(str);
manacher();
int ans = 0;
for(int i = 1; i <= n*2+1; i++)
ans = max(ans, len[i]);
cout << ans - 1 << endl;
}
return 0;
}