#include <bits/stdc++.h>
using namespace std;
#define ll long long
#define mem(a, b) memset(a,b,sizeof(a))
#define INF 0x3f3f3f3f
#define DBG printf("this is a input\n")
#define fi first
#define se second
#define mk(a, b) make_pair(a,b)
#define p_queue priority_queue
ll gcd(ll a, ll b) {
return b == 0 ? a : gcd(b, a % b);
}
ll lcm(ll a, ll b) {
return a / gcd(a, b) * b;
}
int d[31000000];
char s[11000005];
char str[31000000];
int ans = 0;
void Manacher()
{
int len = strlen(str);
int l = 0 , r = -1;
for(int i = 0 ; i < len ; i ++)
{
int k = (i > r) ? 1 : min(r-i,d[r+l-i]);
while(0 <= i - k && i + k < len && str[i-k] == str[i+k]) k ++;
d[i] = k --;
ans = max(ans,d[i]-1);
if(i + k > r)
{
l = i - k;
r = i + k;
}
}
}
int main(void)
{
scanf("%s",s);
int index = 0;
int len = strlen(s);
for(int i = 0 ; i < len ; i ++)
{
str[index ++] = '#';
str[index ++] = s[i];
}
str[index ++] = '#';
Manacher();
printf("%d\n",ans);
}