#include<bits/stdc++.h>
using namespace std;
void Rome(int an_3){
int a,b,c,d;
a=an_3/1000;//¤d¦ì
b=an_3/100-a*10;//¦Ê¦ì
c=an_3/10-a*100-b*10;//¤Q¦ì
d=an_3-a*1000-b*100-c*10;//Ó¦ì
// cout<<a<<b<<c<<d<<endl;
for(int i=0;i<a;i++){//¤d¦ì
cout<<"M";
}
if(b==9){//¦Ê¦ì
cout<<"CM";
}
else if(b==4){
cout<<"CD";
}
else if(b>=5){
cout<<"D";
for(int i=0;i<b-5;i++){
cout<<"C";
}
}
else{
for(int i=0;i<b;i++){
cout<<"C";
}
}
if(c==9){//¤Q¦ì
cout<<"XC";
}
else if(c==4){
cout<<"XL";
}
else if(c>=5){
cout<<"L";
for(int i=0;i<c-5;i++){
cout<<"X";
}
}
else{
for(int i=0;i<c;i++){
cout<<"X";
}
}
if(d==9){//Ó¦ì
cout<<"IX"<<endl;
}
else if(d==4){
cout<<"IV"<<endl;
}
else if(d>=5){
cout<<"V";
for(int i=0;i<d-5;i++){
cout<<"I";
}
cout<<endl;
}
else{
for(int i=0;i<d;i++){
cout<<"I";
}
cout<<endl;
}
}
//I 1
//V 5
//X 10
//L 50
//C 100
//D 500
//M 1,000
//CM 900
//XC 90
void solve(string str_1,string str_2,map<string,int> map,vector<int> num_1,vector<int> num_2){
int an_1=0,an_2=0,an_3;
for(int i=0;i<str_1.length();i++){
string s_1;
s_1=str_1[i];
num_1[i]=map[s_1];
// cout<<num_1[i]<<endl;
}
for(int i=0;i<str_2.length();i++){
string s_2;
s_2=str_2[i];
num_2[i]=map[s_2];
// cout<<num_2[i]<<endl;
}
for(int i=str_1.length();i>=0;i--){
if(i-1>=0){
if(num_1[i-1] < num_1[i]){
an_1 -= num_1[i-1];
}
else{
an_1 += num_1[i-1];
}
}
}
for(int i=str_2.length();i>=0;i--){
if(i-1>=0){
if(num_2[i-1] < num_2[i]){
an_2 -= num_2[i-1];
}
else{
an_2 += num_2[i-1];
}
}
}
an_3=abs(an_1-an_2);
if(an_3 == 0){
cout<<"ZERO"<<endl;
}
else{
Rome(an_3);
}
}
int main(){
string str_1,str_2;
vector<int> num_1,num_2;
map<string,int> map;
map["I"]=1;
map["V"]=5;
map["X"]=10;
map["L"]=50;
map["C"]=100;
map["D"]=500;
map["M"]=1000;
while(true){
cin>>str_1;
if(str_1 == "#"){
exit(0);
}
else{
cin>>str_2;
num_1.assign(str_1.length()+1,0);
num_2.assign(str_2.length()+1,0);
solve(str_1,str_2,map,num_1,num_2);
}
}
}