#include<iostream>
#include<cstdio>
#include<cstring>
#include<cstdlib>
using namespace std;
char tr1[35],tr2[35],tr3[35];
int num=1,ans;
struct node{
int l,r;
char a;
}n[305];
int build(int l1,int r1,int l2,int r2,int root)
{
if(l1>r1) return 0;
int x=l2;
n[root].a=tr1[l1-1];
char c=tr1[l1-1];
while(tr2[x-1]!=c) x++;
n[root].l=build(l1+1,l1+x-l2,l2,x-1,++num);
n[root].r=build(l1+x-l2+1,r1,x+1,r2,++num);
return root;
}
void gt(int x)
{
if(n[x].l)
gt(n[x].l);
if(n[x].r)
gt(n[x].r);
tr3[++num]=n[x].a;
}
void intt()
{
for(int i=1;i<=200;i++)
n[i].l=n[i].r=0;
num=1;
}
int main()
{
while(cin>>tr1)
{
getchar();
cin>>tr2;
ans=strlen(tr2);
build(1,ans,1,ans,1);
num=0;
gt(1);
for(int i=1;i<=num;i++)
cout<<tr3[i];
cout<<endl;
intt();
getchar();
}
}