#include<stdio.h>
#include<string.h>
#include<algorithm>
using namespace std;
int dp[110][110],k,it1[110],it2[110],it[110],path[110][110];
char name[300][40],name1[110][110],str[40];
int max(int a,int b){
return a>b?a:b;
}
void print_it(int a,int b){
if(a==0||b==0){
return;
}
if(path[a][b]==0){
print_it(a-1,b-1);
printf("%s ",name[a-1]);
}
else if(path[a][b]==-1){
print_it(a,b-1);
}
else{
print_it(a-1,b);
}
}
int main(){
while(scanf("%s",name[0])!=EOF){
int flag=0,i1=1,i2=0;
k=0;
while(1){
scanf("%s",str);
if(str[0]=='#'){
flag++;
if(flag==2){
break;
}
}
if(str[0]!='#'){
if(flag==0){
strcpy(name[i1++],str);
}
if(flag==1){
strcpy(name1[i2++],str);
}
}
}
memset(dp,0,sizeof(dp));
for(int i=1;i<=i1;i++){
for(int j=1;j<=i2;j++){
if(strcmp(name[i-1],name1[j-1])==0){
dp[i][j]=dp[i-1][j-1]+1;path[i][j]=0;
}
else{
if(dp[i][j-1]>dp[i-1][j]){
path[i][j]=-1;
}
else{
path[i][j]=1;
}
dp[i][j]=max(dp[i][j-1],dp[i-1][j]);
}
}
}
print_it(i1,i2);
printf("\n");
}
return 0;
}