#include<stdio.h>
#include<string.h>
int l,lg,i,j,ok;
int best(char p[1500],char q[1500]);
int move();
int newsol();
char a[1500],nul[10],b[1500][5],a1[1500][1500],a2[1500][1500],a3[1500][1500],aux1[1500],aux2[1500],aux3[1500],sol[1500];
int main()
{
FILE *f,*g;
f=fopen("elimin2.in","r");
g=fopen("elimin2.out","w");
fgets(a,2010,f);
l=strlen(a)-1;
for(i=0;i<l;i++)
{a2[i][0]=a[i];strcpy(b[i],a2[i]);}
for(lg=1;lg<l;lg++)
{ for(i=0;i+lg<l;i++)
{ ok=0;
if(a[i]==a[i+lg])
{strcpy(aux3,nul);strcat(aux3,b[i]);strcat(aux3,a1[i+1]);strcat(aux3,b[i]);
if(best(aux3,a2[i]))
{ if(best(aux3,a2[i+1])) {strcpy(a3[i],aux3);ok=1;}
else strcpy(a3[i],a2[i+1]);
}
else
{ if(best(a2[i],a2[i+1])) strcpy(a3[i],a2[i]);
else strcpy(a3[i],a2[i+1]);
}
}
else
{ if(best(a2[i],a2[i+1])) strcpy(a3[i],a2[i]);
else strcpy(a3[i],a2[i+1]);
}
if(ok) newsol();
}
move();
}
fprintf(g,"%s\n",sol);
fcloseall();
return 0;
}
int best(char p[1500],char q[1500])
{
if(strlen(p)>strlen(q)) return 1;
if(strlen(p)<strlen(q)) return 0;
if(strcmp(p,q)>0)return 1;
return 0;
}
int move()
{
for(j=0;j<=i+2;j++)
{strcpy(a1[j],a2[j]);
strcpy(a2[j],a3[j]);}
return 0;
}
int newsol()
{
if(strlen(a3[i])<strlen(sol)) return 0;
if(a3[i][0]=='0') return 0;
if(strlen(a3[i])>strlen(sol)){ strcpy(sol,a3[i]);return 0;}
if(strcmp(a3[i],sol)>0) { strcpy(sol,a3[i]);return 0;}
return 0;
}