#include<bits/stdc++.h>
#define I return
#define LOVE 0
#define TIANYUAN ;
using namespace std;

const int N=1000007;

int n,q;
char s[N];
int a[N],b[N];
int t;
bool flag=false;

int main()
{
	cin>>n;
	scanf("%s",s);
	for(int i=1;i<=n;i++)
	{
		a[i]=i;
		b[i]=n+i;
	}
	cin>>q;
	for(int i=1;i<=q;i++)
	{
		cin>>t;
		int x,y;
		if(t==1)
		{
			cin>>x>>y;
			if(!flag)
			{
				if(x>n)
				{
					if(y>n)
						swap(b[x-n],b[y-n]);
					else
						swap(b[x],a[y]);
				}
				else
				{
					if(y>n)
						swap(a[x],b[y-n]);
					else
						swap(a[x],a[y]);
				}
			}
			else
			{
				if(x>n)
				{
					if(y>n)
						swap(a[x-n],a[y-n]);
					else
						swap(a[x],b[y]);
				}
				else
					{
						if(y>n)
							swap(b[x],a[y-n]);
						else
							swap(b[x],b[y]);
					}
			}
		}
		if(t==2)
		{
			cin>>x>>y;
			if(flag==true)
				flag=false;
			else
				flag=true;
		}
	}
	if(!flag)
	{
		for(int i=1;i<=n;i++)
			cout<<s[a[i]-1];
		for(int i=1;i<=n;i++)
			cout<<s[b[i]-1];
	}
	else
	{
		for(int i=1;i<=n;i++)
			cout<<s[b[i]-1];
		for(int i=1;i<=n;i++)
			cout<<s[a[i]-1];
	}
	I LOVE TIANYUAN
}
#include<bits/stdc++.h>
#pragma GCC optimize("Ofast")
#pragma GCC optimize ("unroll-loops")
#pragma GCC target("sse,sse2,sse3,ssse3,sse4,popcnt,abm,mmx,avx,tune=native")
#define mp make_pair
#define pb push_back
#define pll pair<LL,LL>
#define pii pair<int,int>
#define y second
#define x first
#define LL long long 
#define ULL unsigned long long 
#define sqr(x) ((x)*(x))
#define pi acos(-1)
#define pdd pair<double,double>
#define MEM(x) memset(x,0,sizeof(x))
#define MEMS(x) memset(x,-1,sizeof(x))
using namespace std;
LL mod=1e9+7;
LL f_pow(LL a,LL b){
    LL res=1,temp=a;
    while(b){
        if(b&1)res=res*temp%mod;
        temp=temp*temp%mod;
        b>>=1;
    }
    return res;
}
void solve(){
    int n;
    scanf("%d",&n);
    char c[2][2];
    for(int i = 0;i<2;i++){
        for(int j =0;j<2;j++){
            scanf(" %c",&c[i][j]);
        }
    }
    if(n<=3){
        printf("1\n");
        return;
    }
    if(c[0][1]=='A'){
        if(c[0][0]=='A')printf("1\n");
        else{
            if(c[1][0]=='B'){
                printf("%d\n",f_pow(2,n-3));
            }
            else{
                int f[1005];
                f[0]=1;
                f[1]=1;
                for(int i=2;i<=n-2;i++){
                    f[i]=(f[i-1]+f[i-2])%mod;
                }
                printf("%lld\n",(f[n-3]+f[n-4])%mod);
            }
        }
    }
    else{
        if(c[1][1]=='B')printf("1\n");
        else{
            if(c[1][0]=='A'){
                printf("%d\n",f_pow(2,n-3));
            }
            else{
                int f[1005];
                f[0]=1;
                f[1]=1;
                for(int i=2;i<=n-2;i++){
                    f[i]=(f[i-1]+f[i-2])%mod;
                }
                printf("%lld\n",(f[n-3]+f[n-4])%mod);
            }
        }
    }
}

int main(){
    int t=1;
   // scanf("%d",&t);
    while(t--){
        solve();
    }
}