#include<iostream>
#include<cstdio>
#include<cstdlib>
#include<ctime>
#include<utility>
#include<algorithm>
#include<vector>
#include<queue>
#include<set>
#include<map>
#include<cmath>
#include<cstring>
#include<cctype>
#include<string>
#include<string.h>
#include<list>
#include<strstream>
using namespace std;
string str;
char c[5000];
bool used[30];
vector<int> g[30];
int a[30],n;
int fa[30];
const string s=" abcdefghijklmnopqrstuvwxyz";
void init()
{
memset(used,false,sizeof(used));
memset(g,0,sizeof(g));
memset(a,0,sizeof(a));
memset(fa,0,sizeof(fa));
n=0;
}
void dfs(int k,string ans)
{
if(k==n+1)
{
printf("%s\n",ans.c_str());
// cout<<ans<<endl;
return;
}
/* cout<<k<<ans<<endl;
for(int i=1;i<=n;i++)
cout<<fa[a[i]]<<" ";
cout<<endl;*/
for(int i=1;i<=n;i++)
{
if(used[a[i]] || fa[a[i]]!=0) continue;
used[a[i]]=true;
for(int j=0;j<g[a[i]].size();j++)
fa[g[a[i]][j]]--;
// cout<<"yes"<<endl;
// cout<<s.substr(a[i],1);
dfs(k+1,ans+s.substr(a[i],1));
used[a[i]]=false;
for(int j=0;j<g[a[i]].size();j++)
fa[g[a[i]][j]]++;
}
}
int main()
{
while(getline(cin,str))
{
strcpy(c,str.c_str());
init();
for(int i=0;i<strlen(c);i+=2)
a[++n]=c[i]-'a'+1;
sort(a+1,a+n+1);
getline(cin,str);
strcpy(c,str.c_str());
for(int i=0;i<strlen(c);i+=4)
{
//i i+2
int x=c[i]-'a'+1;
int y=c[i+2]-'a'+1;
g[x].push_back(y);
fa[y]++;//son[x]++;
}
/* for(int i=1;i<=n;i++)
{
cout<<a[i]<<":";
for(int j=0;j<g[a[i]].size();j++)
cout<<g[a[i]][j]<<" ";
cout<<endl;
}
cout<<"-----------"<<endl;*/
dfs(1,"");
printf("\n");
}
return 0;
}