Var
   i,n,s,r: longint;
   d: array [1..9] of longint;
   u: array [1..9] of boolean;
   prim,pot: array [1..3500] of longint;

Function MCD(a,b: longint): longint;
         begin
         if (b<>0) then MCD:= MCD(b, a mod b)
                   else MCD:= a;
         end;

Function pow(x,n: longint): longint;
         var r: longint;
         begin
         r:= 1;
         while (n> 0) do
               begin
               if (odd(n)) then
                  r:= r*x;
               x:= sqr(x);
               n:= n div 2;
               end;
         pow:= r;
         end;

Procedure primos(n: longint);
          var i,j,l,t: longint;
          begin
          prim[1]:= 2;
          t:= 1; i:= 3;
          while (i<= n) do
                begin
                l:= trunc(sqrt(i));
                for j:= 1 to t do
                    if (i mod prim[j] = 0) or (prim[j] > l) then break;
                if (i mod prim[j] <> 0) then
                   begin
                   Inc(t);
                   prim[t]:= i;
                   end;
                Inc(i,2);
                end;
          end;

Function base_min(n: longint): longint;
         var i,m,r,t,u: longint;
         begin
         i:= 1; t:= n;
         while (prim[i] <= sqrt(n)) and (t <> 1) do
               begin
               pot[i]:= 0;
               while (t mod prim[i] = 0) do
                      begin
                      Inc(pot[i]);
                      t:= t div prim[i];
                      end;
               Inc(i);
               end;
         u:= i-1;
         if (t <> 1) then base_min:= n
                     else begin
                          m:= -1;
                          for i:= 1 to u do
                              if (pot[i]<>0) then
                                 if (m = -1) then m:= pot[i]
                                             else m:= mcd(m, pot[i]);
                          r:= 1;
                          for i:= 1 to u do
                              r:= r*pow(prim[i], pot[i] div m);
                          base_min:= r;
                          end;
         end;

Procedure permuta(c, p: longint);
          var i, min: longint;
          begin
          if (c = s) then
             begin
             min:= base_min(p);
             if (min < r) then
                r:= min;
             end;
          for i:= 1 to s do
              if (not u[i]) then
                 begin
                 u[i]:= true;
                 permuta(c+1, 10*p + d[i]);
                 u[i]:= false;
                 end;
          end;

Begin
     primos(trunc(sqrt(1000000000)));
     readln(input,n);
     i:= 0;
     while (n<>0) do
           begin
           Inc(i);
           d[i]:= n mod 10;
           n:= n div 10;
           end;
     s:= i; r:= MaxLongint;
     fillchar(u, sizeof(u), false);
     permuta(0, 0);
     writeln(output, r);
End.

