const   fi='';
        nmax=999999;
type    data=longint;
var
        f:text;
        kq,S,A,tmp:string;
        n,sl,i:data;
        dd:array[1..6] of boolean;
 
procedure sort(l,r: longint);
      var
         i,j: longint;
         y,x:char;
      begin
         i:=l;
         j:=r;
         x:=s[(l+r) div 2];
         repeat
           while s[i]<x do
            inc(i);
           while x<s[j] do
            dec(j);
           if not(i>j) then
             begin
                y:=s[i];
                s[i]:=s[j];
                s[j]:=y;
                inc(i);
                j:=j-1;
             end;
         until i>j;
         if l<j then
           sort(l,j);
         if i<r then
           sort(i,r);
      end;
 
 
procedure try;
var     i:data;
begin
        if sl=n then
                begin
                        if kq>a then
                                begin
                                        writeln(kq);
                                        halt;
                                end;
 
                end
        else
                for i:=1 to n do
                        if not dd[i] then
                                begin
                                        inc(sl);
                                        dd[i]:=true;
                                        kq[sl]:=s[i];
                                        try;
                                        dd[i]:=false;
                                        dec(sl);
                                end;
end;
 
begin
        assign(f,fi); reset(f);
        readln(f,s);
        close(f);
        n:=length(s);
        a:=s;
        kq:=s;
        sort(1,n);
        for i:=n downto 1 do
 
                tmp:=tmp+s[i];
        if tmp=a then
                begin
                        writeln(0);
                        halt;
                end;
        fillchar(dd,sizeof(dd),false);
        sl:=0;
 
        try;
        writeln(0);
end.