#include<iostream>
#include<stdio.h>
#include<string.h>
#include<math.h>
#include<algorithm>
#define ll long long
#include<set>
#include<map>
#include<sstream>
using namespace std;
string A,B,C;///A的牌,B的牌,桌上的牌
bool op(string &x,string &z) ///x是正在操作的玩家手中的牌, z是桌面上的牌
{
if(x.length()==0)
{
return false;
}
bool ans=true;
char front=x[0];
ll i=z.find(front);///返回front在z中的位置下
if(i!=string::npos) //桌上有相同的牌,将这张牌插入x的尾部,并将桌上0~i之间的牌依次插入x的尾部
{
x.insert(x.end(),front);
for(int j=0;j<=i;j++) ///注意,这里值得思考
{
x.insert(x.end(),z[j]);
}
z.erase(0,i+1); ///从桌面上移除这些牌
}
else
{
//将这张牌放在桌面上,下标为0
z.insert(z.begin(),front); ///注意,这里值得思考
ans=false;
}
x.erase(x.begin());
return ans;
}
int main()
{
while(cin>>A>>B)
{
C.clear();
bool flagA=1; ///A能出牌的标志
bool flagB=0; ///B能出牌的标志
while(1)
{
if(flagA)
{
flagA=op(A,C);///注意:赢的一方可以继续出牌
if(A.length()==0)//A没牌了,则B获胜
{
cout<<B<<endl;
break;
}
flagB=!flagA;
}
if(flagB)
{
flagB=op(B,C);
if(B.length()==0)
{
cout<<A<<endl;
break;
}
flagA=!flagB;
}
}
}
}