#include<bits/stdc++.h>
using namespace std;
typedef long long LL;
LL dp[4][4][60];
char str[2][60];
const LL mod = 1e9+7;
int main(void)
{
    int N;
    while(scanf("%d",&N)!=EOF)
    {
        memset(dp,0,sizeof(dp));
        for(int i = 0; i < 2; i++)
            scanf("%s",str[i]+1);
        for(int i = 0; i < 3; i++)
        {
            for(int j = 0; j < 3; j++)
            {
                dp[i][j][0] = 1;
            }
        }
        for(int i = 1; i <= N; i++)
        {
            if(str[0][i] == str[1][i])
            {
                if(i - 1 != 0)
                {
                    dp[0][0][i] = (dp[1][2][i-1] + dp[2][1][i-1] + dp[1][1][i-1] + dp[2][2][i-1])%mod;
                    dp[1][1][i] = (dp[0][2][i-1] + dp[2][0][i-1] + dp[2][2][i-1] + dp[0][0][i-1])%mod;
                    dp[2][2][i] = (dp[1][1][i-1] + dp[1][0][i-1] + dp[0][1][i-1] + dp[0][0][i-1])%mod;
                }
                else
                {
                    for(int s = 0; s < 3; s++)
                    {
                        dp[s][s][i] = 1;
                    }
                }
                if(str[0][i] == str[1][i-1])
                {
                    if(i-2!=0)
                    {
                        dp[1][0][i] = (dp[0][1][i-2] + dp[0][2][i-2] + dp[2][1][i-2] + dp[2][2][i-2])%mod;
                        dp[0][1][i] = (dp[1][0][i-2] + dp[1][2][i-2] + dp[2][0][i-2] + dp[2][2][i-2])%mod;
                        dp[1][2][i] = (dp[2][1][i-2] + dp[0][1][i-2] + dp[0][0][i-2] + dp[2][0][i-2])%mod;
                        dp[2][1][i] = (dp[1][2][i-2] + dp[0][2][i-2] + dp[0][0][i-2] + dp[1][0][i-2])%mod;
                        dp[0][2][i] = (dp[2][0][i-2] + dp[2][1][i-2] + dp[1][1][i-2] + dp[1][0][i-2])%mod;
                        dp[2][0][i] = (dp[1][1][i-2] + dp[1][2][i-2] + dp[0][1][i-2] + dp[0][2][i-2])%mod;
                    }
                    else
                    {
                        for(int j = 0; j < 3; j++)
                        {
                            for(int s = 0; s < 3; s++)
                            {
                                if(s!=j)
                                    dp[j][s][i] = 1;
                            }
                        }
                    }
                }
            }
            else
            {
                if(str[0][i-1] == str[0][i])
                {
                    if(i - 2!=0)
                    {
                        dp[1][0][i] = (dp[0][1][i-2] + dp[0][2][i-2] + dp[2][1][i-2] + dp[2][2][i-2])%mod;
                        dp[0][1][i] = (dp[1][0][i-2] + dp[1][2][i-2] + dp[2][0][i-2] + dp[2][2][i-2])%mod;
                        dp[1][2][i] = (dp[2][1][i-2] + dp[0][1][i-2] + dp[0][0][i-2] + dp[2][0][i-2])%mod;
                        dp[2][1][i] = (dp[1][2][i-2] + dp[0][2][i-2] + dp[0][0][i-2] + dp[1][0][i-2])%mod;
                        dp[0][2][i] = (dp[2][0][i-2] + dp[2][1][i-2] + dp[1][1][i-2] + dp[1][0][i-2])%mod;
                        dp[2][0][i] = (dp[1][1][i-2] + dp[1][2][i-2] + dp[0][1][i-2] + dp[0][2][i-2])%mod;
                    }
                    else
                    {
                        for(int j = 0; j < 3; j++)
                        {
                            for(int s = 0; s < 3; s++)
                            {
                                if(s!=j)
                                    dp[j][s][i] = 1;
                            }
                        }
                    }
                }
            }
        }
        LL sum = 0;
        for(int i = 0; i < 3; i++)
        {
            for(int j = 0; j < 3; j++)
            {
                sum += dp[i][j][N];
                sum %=mod;
            }
        }
        printf("%lld\n",sum);
    }
    return 0;
}


Measured memory_bytes: 256