#include<iostream>
#include<cstring>
using namespace std;
string sta,stb;
struct boy{
char T='.'; int YE=0;
}tre[5000];
int lena,lenb,lx,maxye=0;
void buitre(int la,int ra,int lb,int rb,int by){
int lx=stb.find(sta[la]);
if(lx>lb)buitre(la+1, la+(lx-lb), lb, lx-1,by*2);
if(lx<rb)buitre(la+(lx-lb)+1, ra, lx+1, rb,by*2+1);
tre[by].T=sta[la];
}
int cal(int x){
if(tre[x].T=='.') return 0;
else if(tre[x*2].T=='.' && tre[x*2+1].T=='.')
return tre[x].YE=1;
else return tre[x].YE=cal(2*x)+cal(2*x+1);
}
void xian(int root){
if(tre[root].YE>0){ for(int i=1;i<=tre[root].YE;++i)cout<<tre[root].T;
cout<<endl;
}else return;
xian(root*2);
xian(root*2+1);
}
int main(){
cin>>sta>>stb;
lena=sta.size()-1;
lenb=stb.size()-1;
buitre(0,lena,0,lenb,1);
cal(1);
xian(1);
return 0;
}