#include <bits/stdc++.h>
using namespace std;
//char to int
int ci(char n)
{
switch(n)
{
case 'I': return 1; break;
case 'V': return 5; break;
case 'X': return 10; break;
case 'L': return 50; break;
case 'C': return 100; break;
case 'D': return 500; break;
case 'M': return 1000; break;
default: break;
}
}
//int to char
char ic(int n)
{
switch(n)
{
case 6: return 'I'; break;
case 5: return 'V'; break;
case 4: return 'X'; break;
case 3: return 'L'; break;
case 2: return 'C'; break;
case 1: return 'D'; break;
case 0: return 'M'; break;
default: break;
}
}
//減法取代
string subtraction(int n)
{
switch(n)
{
case 5: return "IV"; break;
case 4: return "IX"; break;
case 3: return "XL"; break;
case 2: return "XC"; break;
case 1: return "CD"; break;
case 0: return "CM"; break;
default: break;
}
}
//羅馬表示
void roma(int n)
{
int a[7] = {};
int b[6] = {};
if(n == 0){
cout << "ZERO" << endl;
return;
}
while(n > 0){
if(n >= 1000)
{
a[0]++;
n -= 1000;
}
else if(n >= 500)
{
a[1]++;
n -= 500;
}
else if(n >= 100)
{
a[2]++;
n -= 100;
}
else if(n >= 50)
{
a[3]++;
n -= 50;
}
else if(n >= 10)
{
a[4]++;
n -= 10;
}
else if(n >= 5)
{
a[5]++;
n -= 5;
}
else if(n >= 1)
{
a[6]++;
n -= 1;
}
}
for(int i = 6 ; i >= 2 ; i--)
{
if(i % 2 == 0)
{
//當同一個
if(a[i] > 3)
{
if(a[i-1] > 0)
{
a[i] = 0;
a[i-1]--;
b[i-2]++;
}
else
{
a[i] = 0;
b[i-1]++;
}
}
}
}
for(int i = 0 ; i < 7 ; i++)
{
for(int j = 1 ; j <= a[i] ; j++)
{
cout << ic(i);
}
if(i < 6)
{
for(int k = 1 ; k <= b[i] ; k++)
{
cout << subtraction(i);
}
}
}
return;
}
int main()
{
string a; //用字串來抓羅馬數字
char n;
int num_1 = 0; //前面的數字
int num_2 = 0; //後面的數字
bool now = false; //表示現在加總的是前面的數字還是後面的數字
while(cin >> a)
{
for(int i = 1 ; i <= a.length() ; i++)
{
n = a[i-1]; //把每個字母拆開來看
//當輸入#就結束
if(n == '#')
return 0;
//根據now來把羅馬數字的值加到前或後
if(now == false)
{
num_1 += ci(n);
}
else
{
num_2 += ci(n);
}
}
//當後面的數字加好後輸出以羅馬數字表示的兩者差
if(now == true)
{
roma((int)abs(num_1 - num_2)); //兩者差的絕對值
cout << endl;
num_1 = 0; //初始化
num_2 = 0; //初始化
now = false; //初始化
continue;
}
now = true; //切換到後面的數字總和(num_2)
}
return 0;
}