#include<iostream>
#include<cstring>
using namespace std;
char yuan[20010],xin[20010],now[90]; //yuan:读入字符串;xin:处理后只含小写字母的字符串
int place[20010],wei,maxlen,sta,lenxin;
bool huiwen(int start,int end){ //判断是否为回文,start为回文头,end为回文尾
int lennow;
lennow=end-start+1;
for(int i=start;i<start+lennow/2+1;i++){
if(xin[i]!=xin[end-i+start]){
return false;
}
}
return true;
}
int main(){
int len;
while(cin.getline(now,85)){ //读入
strcat(yuan,now);
strcat(yuan,"\n");
}
len=strlen(yuan);
for (int i=0;i<len;i++){ //删除字符,大写字母转小写,存入xin
if(yuan[i]>='a'&&yuan[i]<='z'){
xin[wei]=yuan[i];
place[wei]=i;
wei++;
}
if(yuan[i]>='A'&&yuan[i]<='Z'){
xin[wei]=yuan[i]+32;
place[wei]=i;
wei++;
}
}
lenxin=strlen(xin);
for (int i=0;i<lenxin;i++){
for (int j=0;j<min(2002,lenxin-i);j++){
if((huiwen(i,i+j))&&(j>maxlen)){
maxlen=j;
sta=i;
}
}
}
cout<<maxlen+1<<endl;
for(int i=place[sta];i<=place[sta+maxlen];i++){
cout<<yuan[i];
}
return 0;
}
还有优化空间吗