#include <stdio.h>
#include <string.h>
#include <algorithm>
using namespace std;
#define nmax 2048
#define FOR(i,s,d) for(i=(s);i<(d);++i)
int A[nmax][nmax],L[nmax][16],R[nmax][16],last[16],n,sol;
char s[nmax];
int doit(int a,int b)
{
if(A[a][b])
return A[a][b];
A[a][b]=1;
if(a==b)
return A[a][b]=1;
if(a>b)
return A[a][b]=0;
if(s[a]==s[b])
return A[a][b]=doit(a+1,b-1)+2;
return A[a][b]=max(doit(a,b-1),doit(a+1,b));
}
int afis(int a,int b,int sol)
{
int i;
printf("%c",s[a]);
if(sol>2)
{
for(i=9;i>=0;i--)
if(L[a+1][i]!=-1&&R[b-1][i]!=-1)
if(doit(L[a+1][i],R[b-1][i])==sol-2)
break;
afis(L[a+1][i],R[b-1][i],sol-2);
}
if(b!=a)
printf("%c",s[b]);
}
int main()
{
freopen("elimin2.in","r",stdin);
freopen("elimin2.out","w",stdout);
int i;
scanf("%s",s);
n=strlen(s);
memset(last,-1,sizeof(last));
FOR(i,0,n)
{
last[s[i]-'0']=i;
memcpy(R[i],last,sizeof(last));
}
memset(last,-1,sizeof(last));
for(i=n-1;i>=0;--i)
{
last[s[i]-'0']=i;
memcpy(L[i],last,sizeof(last));
}
FOR(i,1,10)
if(L[0][i]!=-1&&R[n-1][i]!=-1)
sol=max(sol,doit(L[0][i],R[n-1][i]));
for(i=9;i;--i)
if(L[0][i]!=-1&&R[n-1][i]!=-1)
if(A[L[0][i]][R[n-1][i]]==sol)
{
afis(L[0][i],R[n-1][i],sol);
break;
}
printf("\n");
return 0;
}