#include<bits/stdc++.h>
//#define mx 100010
//#define mod 1000000007
//#define pi 2*acos(0.0)
//#define ll long long int
//#define pp pair<int,int>
//#define ull unsigned long long int
//#define valid(tx,ty) tx>=0&&tx<r&&ty>=0&&ty<c
#define mem(arr,val) memset(arr,val,sizeof(arr))
//const int fx[]={+0,+0,+1,-1,-1,+1,-1,+1};
//const int fy[]={-1,+1,+0,+0,+1,+1,-1,-1};
//int biton(int p,int pos){return p=p|(1<<pos);}
//int bitoff(int p,int pos){return p=p&~(1<<pos);}
//bool bitcheck(int p,int pos){return (bool)(p&(1<<pos));}
//ll POW(ll b,ll p) {ll Ans=1; while(p){if(p&1)Ans=(Ans*b);b=(b*b);p>>=1;}return Ans;}
//ll BigMod(ll b,ll p,ll Mod) {ll Ans=1; while(p){if(p&1)Ans=(Ans*b)%Mod;b=(b*b)%Mod;p>>=1;}return Ans;}
//ll ModInverse(ll p,ll Mod) {return BigMod(p,Mod-2,Mod);}
using namespace std;
int dp[101][101];
string str1,str2;
void print_path(){
int i=str1.length();
int j=str2.length();
while(i>0||j>0){
if(str1[i-1]==str2[j-1]){
i--;
j--;
}
else if(j>0&&dp[i][j]==dp[i][j-1]+1){
cout<<"I"<<str2[j-1];
if(i<=8) cout<<"0";
cout<<i+1;
j--;
}
else if(i>0&&j>0&&dp[i][j]==dp[i-1][j-1]+1){
cout<<"C"<<str2[j-1];
if(i<=9) cout<<"0";
cout<<i;
i--;
j--;
}
else if(i>0&&dp[i][j]==dp[i-1][j]+1){
cout<<"D"<<str1[i-1];
if(i<=9) cout<<"0";
cout<<i;
i--;
}
}
cout<<"E\n";
}
int main(){
// freopen("Input.txt","r",stdin); freopen("Output.txt","w",stdout);
// ios_base::sync_with_stdio(false); cin.tie(NULL);
while(cin>>str1){
if(str1[0]=='#') break;
cin>>str2;
mem(dp,0);
for(int i=0;i<=str1.length();i++){
for(int j=0;j<=str2.length();j++){
if(i==0){
dp[i][j]=j;
}
else if(j==0){
dp[i][j]=i;
}
else if(str1[i-1]==str2[j-1]){
dp[i][j]=dp[i-1][j-1];
}
else{
dp[i][j]=1+min(dp[i-1][j-1],min(dp[i][j-1],dp[i-1][j]));
}
}
}
print_path();
}
return 0;
}
/**
Sample Input
abcde bcgfe
#
Sample Output
Da01Cg03If04E
**/
I2luY2x1ZGU8Yml0cy9zdGRjKysuaD4KLy8jZGVmaW5lIG14ICAgICAgICAgICAgIDEwMDAxMAovLyNkZWZpbmUgbW9kICAgICAgICAgICAgMTAwMDAwMDAwNwovLyNkZWZpbmUgcGkgICAgICAgICAgICAgMiphY29zKDAuMCkKLy8jZGVmaW5lIGxsICAgICAgICAgICAgIGxvbmcgbG9uZyBpbnQKLy8jZGVmaW5lIHBwICAgICAgICAgICAgIHBhaXI8aW50LGludD4KLy8jZGVmaW5lIHVsbCAgICAgICAgICAgIHVuc2lnbmVkIGxvbmcgbG9uZyBpbnQKLy8jZGVmaW5lIHZhbGlkKHR4LHR5KSAgIHR4Pj0wJiZ0eDxyJiZ0eT49MCYmdHk8YwojZGVmaW5lIG1lbShhcnIsdmFsKSAgIG1lbXNldChhcnIsdmFsLHNpemVvZihhcnIpKQovL2NvbnN0IGludCBmeFtdPXsrMCwrMCwrMSwtMSwtMSwrMSwtMSwrMX07Ci8vY29uc3QgaW50IGZ5W109ey0xLCsxLCswLCswLCsxLCsxLC0xLC0xfTsKLy9pbnQgYml0b24oaW50IHAsaW50IHBvcyl7cmV0dXJuIHA9cHwoMTw8cG9zKTt9Ci8vaW50IGJpdG9mZihpbnQgcCxpbnQgcG9zKXtyZXR1cm4gcD1wJn4oMTw8cG9zKTt9Ci8vYm9vbCBiaXRjaGVjayhpbnQgcCxpbnQgcG9zKXtyZXR1cm4gKGJvb2wpKHAmKDE8PHBvcykpO30KLy9sbCBQT1cobGwgYixsbCBwKSB7bGwgQW5zPTE7IHdoaWxlKHApe2lmKHAmMSlBbnM9KEFucypiKTtiPShiKmIpO3A+Pj0xO31yZXR1cm4gQW5zO30KLy9sbCBCaWdNb2QobGwgYixsbCBwLGxsIE1vZCkge2xsIEFucz0xOyB3aGlsZShwKXtpZihwJjEpQW5zPShBbnMqYiklTW9kO2I9KGIqYiklTW9kO3A+Pj0xO31yZXR1cm4gQW5zO30KLy9sbCBNb2RJbnZlcnNlKGxsIHAsbGwgTW9kKSB7cmV0dXJuIEJpZ01vZChwLE1vZC0yLE1vZCk7fQp1c2luZyBuYW1lc3BhY2Ugc3RkOwppbnQgZHBbMTAxXVsxMDFdOwpzdHJpbmcgc3RyMSxzdHIyOwp2b2lkIHByaW50X3BhdGgoKXsKICAgIGludCBpPXN0cjEubGVuZ3RoKCk7CiAgICBpbnQgaj1zdHIyLmxlbmd0aCgpOwogICAgd2hpbGUoaT4wfHxqPjApewogICAgICAgIGlmKHN0cjFbaS0xXT09c3RyMltqLTFdKXsKICAgICAgICAgICAgaS0tOwogICAgICAgICAgICBqLS07CiAgICAgICAgfQogICAgICAgIGVsc2UgaWYoaj4wJiZkcFtpXVtqXT09ZHBbaV1bai0xXSsxKXsKICAgICAgICAgICAgY291dDw8IkkiPDxzdHIyW2otMV07CiAgICAgICAgICAgIGlmKGk8PTgpIGNvdXQ8PCIwIjsKICAgICAgICAgICAgY291dDw8aSsxOwogICAgICAgICAgICBqLS07CiAgICAgICAgfQogICAgICAgIGVsc2UgaWYoaT4wJiZqPjAmJmRwW2ldW2pdPT1kcFtpLTFdW2otMV0rMSl7CiAgICAgICAgICAgIGNvdXQ8PCJDIjw8c3RyMltqLTFdOwogICAgICAgICAgICBpZihpPD05KSBjb3V0PDwiMCI7CiAgICAgICAgICAgIGNvdXQ8PGk7CiAgICAgICAgICAgIGktLTsKICAgICAgICAgICAgai0tOwogICAgICAgIH0KCiAgICAgICAgZWxzZSBpZihpPjAmJmRwW2ldW2pdPT1kcFtpLTFdW2pdKzEpewogICAgICAgICAgICBjb3V0PDwiRCI8PHN0cjFbaS0xXTsKICAgICAgICAgICAgaWYoaTw9OSkgY291dDw8IjAiOwogICAgICAgICAgICBjb3V0PDxpOwogICAgICAgICAgICBpLS07CiAgICAgICAgfQogICAgfQogICAgY291dDw8IkVcbiI7Cn0KaW50IG1haW4oKXsKLy8gICAgZnJlb3BlbigiSW5wdXQudHh0IiwiciIsc3RkaW4pOyBmcmVvcGVuKCJPdXRwdXQudHh0IiwidyIsc3Rkb3V0KTsKLy8gICAgaW9zX2Jhc2U6OnN5bmNfd2l0aF9zdGRpbyhmYWxzZSk7IGNpbi50aWUoTlVMTCk7CiAgICB3aGlsZShjaW4+PnN0cjEpewogICAgICAgIGlmKHN0cjFbMF09PScjJykgYnJlYWs7CiAgICAgICAgY2luPj5zdHIyOwogICAgICAgIG1lbShkcCwwKTsKICAgICAgICBmb3IoaW50IGk9MDtpPD1zdHIxLmxlbmd0aCgpO2krKyl7CiAgICAgICAgICAgIGZvcihpbnQgaj0wO2o8PXN0cjIubGVuZ3RoKCk7aisrKXsKICAgICAgICAgICAgICAgIGlmKGk9PTApewogICAgICAgICAgICAgICAgICAgIGRwW2ldW2pdPWo7CiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICBlbHNlIGlmKGo9PTApewogICAgICAgICAgICAgICAgICAgIGRwW2ldW2pdPWk7CiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICBlbHNlIGlmKHN0cjFbaS0xXT09c3RyMltqLTFdKXsKICAgICAgICAgICAgICAgICAgICBkcFtpXVtqXT1kcFtpLTFdW2otMV07CiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICBlbHNlewogICAgICAgICAgICAgICAgICAgIGRwW2ldW2pdPTErbWluKGRwW2ktMV1bai0xXSxtaW4oZHBbaV1bai0xXSxkcFtpLTFdW2pdKSk7CiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgIH0KICAgICAgICB9CiAgICAgICAgcHJpbnRfcGF0aCgpOwogICAgfQogICAgcmV0dXJuIDA7Cn0KLyoqClNhbXBsZSBJbnB1dAphYmNkZSBiY2dmZQojClNhbXBsZSBPdXRwdXQKRGEwMUNnMDNJZjA0RQoqKi8K