#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; }