//使用中心拓展法,从每一个s[i]向左右两边拓展
//使用maxlen来记录最长回文子串的长度
//使用start来记录最长回文子串的起始index
//每一次遍历的过程中:
//对于每一个s[i],每次进入拓展前设置len为1,即它自己
//使用left来记录当前回文子串的起始index
//使用right来记录当前回文子串的结束index
//每次对s[i]的拓展结束以后,比较len是否大于maxlen,更新maxlen并更新start=left
//遍历完成以后,最长回文子串的起始index==start,结束index=maxlen;
#include<iostream>
#include<string>
using namespace std;
int main()
{
string s;
getline(cin,s);
int maxlen=0,start=0;
int left=0,right=0;
for(int i=0;i<s.size();i++)
{
int len=1;
left=i,right=i;
//向左拓展
while(left-1>=0&&s[left-1]==s[i])
{
left--;
len++;
}
//向右拓展
while(right+1<s.size()&&s[right+1]==s[i])
{
right++;
len++;
}
//向左右同时拓展
while(left-1>=0&&right+1<s.size()&&s[left-1]==s[right+1])
{
left--;
right++;
len+=2;
}
//更新maxlen
if(len>maxlen)
{
maxlen=len;
start=left;
}
}
cout<<maxlen<<endl;
return 0;
}