program rimski;

var
   s, pom, rez : string;
   b, i : integer;
   br1 : array[1 .. 5] of integer;

function Conv1 (s : string) : integer;
var
   d, j : integer;
begin
   if Pos ('IX', s)<>0 then j := 9
   else begin
      if Pos ('VIII', s)<>0 then j := 8
      else begin
         if Pos ('VII', s)<>0 then j := 7
         else begin
            if Pos ('VI', s)<>0 then j := 6
            else begin
               if Pos ('V', s)<>0 then j := 5
               else begin
                  if Pos ('IV', s)<>0 then j := 4
                  else begin
                     if Pos ('III', s)<>0 then j := 3
                  else begin
                     if Pos ('II', s)<>0 then j := 2
                  else if Pos ('I', s)<>0 then j := 1 else j := 0;
   end; end; end; end; end; end; end;
   if Pos ('XC', s)<>0 then d := 9
   else begin
      if Pos ('LXXX', s)<>0 then d := 8
      else begin
         if Pos ('LXX', s)<>0 then d := 7
         else begin
            if Pos ('LX', s)<>0 then d := 6
            else begin
               if Pos ('L', s)<>0 then d := 5
               else begin
                  if Pos ('XL', s)<>0 then d := 4
                  else begin
                     if Pos ('XXX', s)<>0 then d := 3
                  else begin
                     if Pos ('XX', s)<>0 then d := 2
                  else if Pos ('X', s)<>0 then d := 1 else d := 0;
   end; end; end; end; end; end; end;
   Conv1 := d*10+j;
end;

function Conv2 (b : integer) : string;
var s : string;
begin
   s := '';
   case b div 10 of
      1 : s := Concat (s, 'X');
      2 : s := Concat (s, 'XX');
      3 : s := Concat (s, 'XXX');
      4 : s := Concat (s, 'XL');
      5 : s := Concat (s, 'L');
      6 : s := Concat (s, 'LX');
      7 : s := Concat (s, 'LXX');
      8 : s := Concat (s, 'LXXX');
      9 : s := Concat (s, 'XC');
   end;
   case b mod 10 of
      1 : s := Concat (s, 'I');
      2 : s := Concat (s, 'II');
      3 : s := Concat (s, 'III');
      4 : s := Concat (s, 'IV');
      5 : s := Concat (s, 'V');
      6 : s := Concat (s, 'VI');
      7 : s := Concat (s, 'VII');
      8 : s := Concat (s, 'VIII');
      9 : s := Concat (s, 'IX');
   end;
   Conv2 := s;
end;

function Isti (min : string) : boolean;
var
   br : array[1 .. 5] of integer;
   i : integer; pom : boolean;
begin
   if Length (min)<>Length (s) then begin
      Isti := false; exit;
   end;
   for i := 1 to 5 do br[i] := 0;
   for i := 1 to Length (s) do begin
      if min[i]='I' then Inc (br[1]);
      if min[i]='V' then Inc (br[2]);
      if min[i]='X' then Inc (br[3]);
      if min[i]='L' then Inc (br[4]);
      if min[i]='C' then Inc (br[5]);
   end;
   pom := true;
   for i := 1 to 5 do
      if br[i]<>br1[i] then pom := false;
   Isti := pom;
end;

begin
   readln (s);
    for i := 1 to Length (s) do begin
      if s[i]='I' then Inc (br1[1]);
      if s[i]='V' then Inc (br1[2]);
      if s[i]='X' then Inc (br1[3]);
      if s[i]='L' then Inc (br1[4]);
      if s[i]='C' then Inc (br1[5]);
   end;
   b := Conv1 (s);
   Inc (b);
   repeat
      Dec (b);
      pom := Conv2 (b);
      if Isti (pom) then rez := pom;
   until b=1;
   writeln (rez);
end.
