//使用中心拓展法,从每一个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;
}