#include<bits/stdc++.h>
using namespace std;
char s[70001],a[70001];
int sit[70001],p[5001][5001],lens,lena,maxn,i=1,j=1,start;
int main()
{
while (scanf("%c",&s[i])!=EOF)
{
if (s[i]>='A'&&s[i]<='Z')
a[j]=s[i]+32,sit[j]=i,p[j][j]=1,j++;
if (s[i]>='a'&&s[i]<='z')
a[j]=s[i],sit[j]=i,p[j][j]=1,j++;
//p[j][j]=1,表示j开始到j结束的一定是回文
i++;
}
lens=i,lena=j-1;
for(i=1;i<=lena;i++)
{
//i是长度
for(j=1;j<=lena;j++)
{
//j是起始
int e=i+j-1;//计算到几结束
if(p[j+1][e-1]&&a[j]==a[e])p[j][e]=1;
if(p[j][e]){maxn=max(maxn,e-j+1);start=j;}
//找回文
}
}
printf("%d \n",maxn);
for(int ss=sit[start];ss<=sit[start+maxn-1];ss++)
printf ("%c",s[ss]);
return 0;
}