import java.util.*;
public class Main{

//主方法
public static void main(String args[]){
    Scanner sc=new Scanner(System.in);
    while(sc.hasNext()){
        String str=sc.next();
        //两种回文字符,让最大的上
        int max=Math.max(maxPalindrome(str),maxPalindrome2(str));
        System.out.println(max);
    }
}

/**

判断ABA型最大长度,本来只有这个方法的,忽然想起还有ABBA型的,修改一下,
改成ABBA型继续用
*/

public static int maxPalindrome(String str){
    int max=1;//先定义最大长度为1
    for(int i=1;i<str.length()-1;i++){ //ABA形状最少得三个吧,所以从坐标一开始遍历,到长度-2为止
        //判断能找点i到数组边界的半径,也就是循环能走多少次,一个数组,左边的数据,坐标为i的到坐标为0的长度就是i,末尾的就是长度减i-1,其实拿笔画一下就理解了
        int count=Math.min(i,str.length()-i-1);
        int maxCount=1; //本次找到得最长长度
        //以i为中心,如果两侧字符一样,再找下一个,断了就break,这样找到以该点为中心的最长的回文字符
        for(int j=1;j<=count;j++){
            if(str.charAt(i-j)==str.charAt(i+j)){
                maxCount+=2;
            }else{
                break;
            }
        }

        max=Math.max(max,maxCount);
    }
    return max;
}
//判断ABBA型最大长度的方法
public static int maxPalindrome2(String str){
    int max=1;
    for(int i=1;i<str.length()-1;i++){
        int count=Math.min(i,str.length()-i-2);
        int maxCount=1;
        //原理和上面类似,不过是先找到一对一样的字符也就是ABBA中的BB
        if(str.charAt(i)==str.charAt(i+1)){
            maxCount=2;
            for(int j=1;j<=count;j++){
                if(str.charAt(i-j)==str.charAt(i+j+1)){
                    maxCount+=2;
                }else{
                    break;
                }
            }
        }
        //保留最长的
        max=Math.max(max,maxCount);
    }
    return max;
}

}