import java.util.Scanner; // 注意类名必须为 Main, 不要有任何 package xxx 信息 public class Main { /** * 动态规划 * @param args */ public static void main(String[] args) { Scanner in = new Scanner(System.in); while (in.hasNext()){ String input = in.nextLine(); char[] chars = input.toCharArray(); int len = input.length(); int result = 1; int[][] dp = new int[len+1][len+1]; for(int i=0; i<len; i++){ dp[i][i] = 1; } for(int i=0; i<len-1; i++){ if(chars[i] == chars[i+1]){ dp[i][i+1] = 2; } } for(int k=2; k<len; k++){ for(int i=0; i+k<len; i++){ // 左右两边字符相同 且 之间子串为回文串 if(chars[i] == chars[i+k] && dp[i+1][i+k-1]>=1){ // 回文串 长度+2 dp[i][i+k] = dp[i+1][i+k-1]+2; }else{ // 非回文串 dp[i][i+k] = 0; } result = Math.max(result, dp[i][i+k]); } } System.out.println(result); } } // /** // * reverse() time exceed // * @param args // */ // public static void main(String[] args) { // Scanner in = new Scanner(System.in); // // while (in.hasNext()){ // String input = in.nextLine(); // // int len = input.length(); // int result = 1; // // for(int i=0; i<len; i++){ // for(int j=len; j>i; j--){ // if(isReverse(input.substring(i,j))){ // result = Math.max(result, j-i); // } // } // } // // System.out.print(result); // } // } // // private static boolean isReverse(String str){ // // return str.equals(new StringBuilder(str).reverse().toString()); // } }