#include<bits/stdc++.h>
using namespace std;
const int int_j=(1<<21)+3,int_k=15ll,int_l=48;
int m,n;
long long int a[int_j],b[int_j],c[int_j];
void func(long long int k[],int vip){
for(int l=1;l<n;l<<=1){
for(int i=0;i<n;i+=l<<1){
for(int j=0;j<l;j++){
k[i+j+l]+=vip*k[i+j];
}
}
}
}
int main(){
char s[int_j],t[int_j];
cin>>m>>s>>t;n=1<<m;
for(int i=0;i<n;i++){
a[i]=(s[i]&int_k)<<(__builtin_popcount(i)<<1);
}func(a,1);
for(int i=0;i<n;i++){
b[i]=(t[i]&int_k)<<(__builtin_popcount(i)<<1);
}func(b,1);
for(int i=0;i<n;i++){
c[i]=a[i]*b[i];
}func(c,-1);
for(int i=0;i<n;i++){
putchar(c[i]>>(__builtin_popcount(i)<<1)&3|int_l);
}return 0;
}