#include <iostream>
#include <string>
#include <vector>
using namespace std;
int getLongestPalindrome (string s)
{   
    int length =0;
    int n =s.size();
    //space:
    vector<vector<bool>> dp(n,vector<bool>(n,false));
    for( int end  =0;end <n;end++)
    {
        for( int start =0; start <=end;start++)
        {
            if (s[start] == s[end])
            {    
                if (end -start <2 )
                {
                     // 每个子串 100%是回文。[a] [aa] [aba]
                     dp[start][end] =true;
                }else
                {
                     dp[start][end] =  dp[start+1][end-1]; 
                }
                //双指针 end-1 >=start+1  end -start >=2
            }else
            {
                dp[start][end] = false; //[a?b]
            }
            if ( true == dp[start][end]  && end -start +1 > length)
            {
                length = end -start +1;
            }
        }
    }
    return length;
}
int main()
{
  string s;
  while(cin>>s)
  {
      cout << getLongestPalindrome(s)<<endl;
  }
}


 京公网安备 11010502036488号
京公网安备 11010502036488号