#include<cstdio>
#include<algorithm>
using namespace std;
const int N=30;
int n,num[N],b[4][N],jw[N],mx,bk;
char a[4][N];
bool bj,vis[N];
void dfs(int k,int x) {
if(bj) return ;
if(x>n) {
for(int i=1;i<=n;i++) printf("%d ",num[i-1]);
bj=1;
return ;
}
if(num[a[1][n]-'A']+num[a[2][n]-'A']>=n) return ;
if(k>3) {
if(b[1][x]+b[2][x]+jw[x]!=b[3][x]&&b[1][x]+b[2][x]-n+jw[x]!=b[3][x]) return ;
jw[x+1]=(b[1][x]+b[2][x]+jw[x]>=n);
dfs(1,x+1);
jw[x+1]=0;
return ;
}
if(num[a[k][x]-'A']||bk==a[k][x]-'A') {
b[k][x]=num[a[k][x]-'A'];
dfs(k+1,x);
b[k][x]=0;
return ;
}
if(k==3&&vis[b[1][x]+b[2][x]+jw[x]]) return ;
for(int i=n-1;i>=0;i--) {
if(vis[i]) continue;
if(i==0) bk=a[k][x]-'A';
vis[i]=1;
num[a[k][x]-'A']=b[k][x]=i;
dfs(k+1,x);
num[a[k][x]-'A']=b[k][x]=0;
vis[i]=0;
if(i==0) bk=-1;
}
}
int main() {
scanf("%d",&n);
scanf("%s%s%s",a[1]+1,a[2]+1,a[3]+1);
reverse(a[1]+1,a[1]+1+n);
reverse(a[2]+1,a[2]+1+n);
reverse(a[3]+1,a[3]+1+n);
bk=-1;
dfs(1,1);
}