#include<cstdio>
#include<cstring>
#include<algorithm>
#include<cmath>
#define mo 1000000007
#define ll long long
#define maxn 1005
using namespace std;

int n,i,j,k,f[2][2];
ll ans;

ll ksm(ll x,ll y){
	ll s=1;
	for(;y;y/=2,x=x*x%mo) if (y&1)
		s=s*x%mo;
	return s;
}

void reverse(){
	static int g[2][2];
	for(i=0;i<2;i++) for(j=0;j<2;j++)
		g[i^1][j^1]=f[j][i]^1;
	memcpy(f,g,sizeof(f));
}

void doit1(){
	static int f[maxn][2];
	f[1][0]=1;
	for(i=2;i<=n-1;i++){
		f[i][0]=(f[i-1][0]+f[i-1][1])%mo;
		f[i][1]=f[i-1][0];
	}
	printf("%d\n",f[n-1][0]);
}

int main(){
	scanf("%d",&n); char ch=getchar();
	for(i=0;i<2;i++) for(j=0;j<2;j++){
		while (ch!='A'&&ch!='B') ch=getchar();
		f[i][j]=ch-'A',ch=getchar();
	}
	if (f[0][1]==1) reverse();
	if (n==2||f[0][0]==0) printf("1"); else 
	if (f[1][0]==0) doit1(); else 
		printf("%lld\n",ksm(2,n-3));
}
#include <bits/stdc++.h>
using ll = long long;
using namespace std;
#define rep(i,n) for(int i=0;i<n;i++)
#define rrep(i,n) for(int i=n-1;i>=0;i--)
#define repl(i,l,r) for(int i=l;i<r;i++)
#define rrepl(i,l,r) for(int i=r-1;i>=l;i--)
const int inf=1e9+10;
const ll INF=2e18+10;
const int dx[4]={1,0,-1,0};
const int dy[4]={0,1,0,-1};

const ll MOD=1e9+7;

int main(){
    int l;cin>>l;
    ll b;
    set<int> s;
    for(int i=2;i<12;i++)s.insert(i);
    b=1;
    for(int i=l-11;i<l;i++){
        b*=i;
        for(int j=2;j<12;j++){
            if(s.find(j)==s.end())continue;
            if(b%j==0){
                b/=j;
                s.erase(j);
            }
        }
    }
    cout<<b<<endl;
    return 0;
}   