#include<bits/stdc++.h>
using namespace std;
typedef long long ll;
typedef double db;
const ll N=15;
inline ll read(){
ll x=0,f=1;
char c=getchar();
while(c<'0'||c>'9'){
if(c=='-')
f=-1;
c=getchar();
}
while(c>='0'&&c<='9'){
x=(x<<1)+(x<<3)+(c^48);
c=getchar();
}
return x*f;
}
inline void write(ll x){
if(x<0){
putchar('-');
x=-x;
}
if(x>9)
write(x/10);
putchar(x%10+'0');
}
ll n;
ll a1[N][3],a2[N][3];
char s1[N],s2[N];
char k[N][N];
bool F=0;
bool check(){
for(int i=0;i<n;i++)
if(a1[i][0]>1||a1[i][1]>1||a1[i][2]>1||a2[i][0]>1||a2[i][1]>1||a2[i][2]>1)
return 1;
return 0;
}
bool pd(){
for(int i=0;i<n;i++)
if(!(a1[i][0]==1&&a1[i][1]==1&&a1[i][2]==1&&a2[i][0]==1&&a2[i][1]==1&&a2[i][2]==1))
return 0;
return 1;
}
void DFS(ll x,ll y){
if(F)
return ;
if(x==n){
if(pd())
F=1;
return ;
}
if(!a1[x][0]&&!a2[y][0]){
k[x][y]='A';
a1[x][0]++,a2[y][0]++;
if(y==(n-1))
DFS(x+1,1);
else
DFS(x,y+1);
a1[x][0]--,a2[y][0]--;
}
if(F)
return ;
if(!a1[x][1]&&!a2[y][1]){
k[x][y]='B';
a1[x][1]++,a2[y][1]++;
if(y==(n-1))
DFS(x+1,1);
else
DFS(x,y+1);
a1[x][1]--,a2[y][1]--;
}
if(F)
return ;
if(!a1[x][2]&&!a2[y][2]){
k[x][y]='C';
a1[x][2]++,a2[y][2]++;
if(y==(n-1))
DFS(x+1,1);
else
DFS(x,y+1);
a1[x][2]--,a2[y][2]--;
}
if(F)
return ;
k[x][y]='.';
if(y==(n-1))
DFS(x+1,1);
else
DFS(x,y+1);
}
void dfs(ll x,bool f){
if(F)
return ;
if(x==n){
if(f)
dfs(0,!f);
else
DFS(1,1);
return ;
}
if(check()||F)
return ;
if(f){
k[x][0]='.';
dfs(x+1,f);
if(F)
return ;
a1[x][s1[x]-'A']++;
a2[0][s1[x]-'A']++;
k[x][0]=s1[x];
dfs(x+1,f);
a1[x][s1[x]-'A']--;
a2[0][s1[x]-'A']--;
}
else{
k[0][x]='.';
dfs(x+1,f);
if(F)
return ;
a1[0][s2[x]-'A']++;
a2[x][s2[x]-'A']++;
k[0][x]=s2[x];
dfs(x+1,f);
a1[0][s2[x]-'A']--;
a2[x][s2[x]-'A']--;
}
}
int main(){
n=read();
scanf("%s",s1);
scanf("%s",s2);
if(s1[0]!=s2[0]){
puts("No");
return 0;
}
dfs(0,1);
if(!F){
puts("No");
return 0;
}
puts("Yes");
for(int i=0;i<n;i++)
printf("%s\n",k[i]);
return 0;
}