#include <iostream>
#include <cstdio>
#include <cstring>
#include <algorithm>
#include <cmath>
using namespace std;
const int N = 2010;
const int inf = 0x3f3f3f3f;
char str[N];
int cost[N], dp[N][N];
void dfs(int l,int r);
int main()
{
while(scanf("%s",str)!=EOF)
{
memset(dp,0,sizeof(dp));
int n=strlen(str);
for(int len=1;len<n;len++)
{
for(int i=0;i<n-len;i++)
{
int j=i+len;
dp[i][j]=inf;
if(str[i]==str[j])
dp[i][j]=min(dp[i][j],dp[i+1][j-1]);
dp[i][j]=min(dp[i+1][j]+1,dp[i][j]);
dp[i][j]=min(dp[i][j-1]+1,dp[i][j]);
}
}
printf("%d ",dp[0][n-1]);
dfs(0,n-1);
printf("\n");
}
return 0;
}
void dfs(int l,int r)
{
if(l>r)
return;
else if(l==r)
printf("%c",str[l]);
else if(str[l]==str[r])
{
printf("%c",str[l]);
dfs(l+1,r-1);
printf("%c",str[l]);
}
else if(dp[l+1][r]+1==dp[l][r])
{
printf("%c",str[l]);
dfs(l+1,r);
printf("%c",str[l]);
}
else
{
printf("%c",str[r]);
dfs(l,r-1);
printf("%c",str[r]);
}
return ;
}