package org.unclehu;
import sun.security.util.Length;
/**
* 求最长公共子序列
*/
import java.util.Scanner;
public class LCS {
public static void main(String args[]){
Scanner scanner = new Scanner(System.in);
String str ;
while(true){
str=scanner.nextLine();
if(str.length()<1) break;
String strRev = new StringBuilder(str).reverse().toString();
int len = str.length();
//构造lcs矩阵
int[][] lcs = new int[len+1][len+1];
for(int i=0;i<len;i++){
for(int j=0;j<len;j++){
//如果相等
if(str.charAt(i)==strRev.charAt(j)){
lcs[i+1][j+1] = lcs[i][j]+1;
}else{
//如果不相等则选择左边上边最大的
lcs[i+1][j+1] = Math.max(lcs[i][j+1],lcs[i+1][j]);
}
}
}
int n = lcs[len][len];
int a[] = new int[n];
int j=len,k=len;
int w=0;
while(lcs[k][j]!=0){
if(str.charAt(k-1)==strRev.charAt(j-1)){
a[w]=k-1;
w++;
}
if(lcs[k-1][j-1]>=lcs[k][j-1]&&lcs[k-1][j-1]>=lcs[k-1][j]) {k-=1;j=j-1;}
else if(lcs[k][j-1]>lcs[k-1][j]) j-=1;
else if(lcs[k][j-1]<lcs[k-1][j]) k-=1;
else k-=1;
}
//输出其中一个最长子序列
for(int i=a.length-1;i>=0;i--){
System.out.print(str.charAt(a[i]));
}
System.out.println();
System.out.println(len-lcs[len][len]);
}
}
}