#include <iostream>
#include <cstdio>
#include <cstring>
#include <string>
using namespace std;
char s[1010];
int dp[1010][1010],l;
string str[1010][1010];
int DP(int x,int y){
if(x>y) return 0;
if(dp[x][y]!=-1) return dp[x][y];
int ret=1;
char Min=s[x];
for(int i=x+1;i<=y;i++) Min=min(s[i],Min);
str[x][y]=Min;
string ans="";
for(int i=x;i<=y;i++){
for(int j=y;j>i;j--){
if(s[i]==s[j]){
ans+=s[i];
int z=DP(i+1,j-1)+2,pos;
if(z>ret){
ret=z;
str[x][y]=ans+str[i+1][j-1];
pos=i;
}else if(z==ret){
if(s[i]<s[pos]) str[x][y]=ans+str[i+1][j-1],pos=i;
}
ans="";
}
}
}
return dp[x][y]=ret;
}
int main(){
while(gets(s)!=NULL){
memset(dp,-1,sizeof dp);
for(int i=0;i<1010;i++){
for(int j=0;j<1010;j++){
str[i][j]="";
}
}
l=strlen(s);
int ret=DP(0,l-1);
int ansl=str[0][l-1].length();
for(int i=0;i<ansl;i++) cout<<str[0][l-1][i];
for(int i=(ret&1) ? ansl-2:ansl-1;i>=0;i--) cout<<str[0][l-1][i];
cout<<endl;
}
return 0;
}