#include <bits/stdc++.h>
using namespace std;
typedef long long ll;
const int INF=0x3f3f3f3f;
const int mod=1e9+7;
const int MAX=5000+10;
char s[MAX];
int dp[MAX],g[MAX][MAX];
int main()
{
	int n,i,j,len,l,r;
	scanf("%s",s+1);
	n=strlen(s+1);
	for(i=1;i<=n;i++) g[i][i]=1;
	for(i=1;i<n;i++)
	{
		if(s[i]==s[i+1]) g[i][i+1]=1;
	}
	for(len=3;len<=n;len++)
	{
		for(l=1;l+len-1<=n;l++)
		{
			r=l+len-1;
			if(s[l]==s[r]) g[l][r]=g[l+1][r-1];
			else g[l][r]=0;
		}
	}
	dp[0]=INF;
	for(i=1;i<=n;i++)
	{
		dp[i]=1;
		for(j=1;j<=i;j++)
		{
			if(g[j][i]==0) continue;
//			cout<<j<<" "<<i<<endl;
			dp[i]=max(dp[i],min(dp[j-1],i-j+1));
		}
	}
	printf("%d\n",dp[n]);
	return 0;
}