#include <bits/stdc++.h>
#define ll long long
#define pb push_back
#define mp make_pair
#define rep(i,a,b) for(int i=a;i<=b;i++)
#define irep(i,a,b) for (int i=a;i>=b;i--)
#define pii pair <int, int>
#define pll pair <ll,ll>

using namespace std;
const int ma = 1e5+5;
ll mod = 1e9+7;
int n;
string str="";
ll dp[55][5][5][5];
ll solve(int i, char c, int c1, int c2)
{
  int idx;
  if(c=='h')
    idx = 0;
  else
    idx = 1;
  ll ans=0;
  if(i==n)
    return 1;
  if(dp[i][idx][c1][c2]!=-1)
    return dp[i][idx][c1][c2];
  if(c=='h')
  {
    //cout<<":P"<<i<<"h"<<str[i]<<endl;
    if(str[i]=='v')
    {
      if(c1+c2==4)
        ans += solve(i+1,'v',2,4);
      else if(c1+c2==5)
        ans += solve(i+1,'v',1,4);
      else
        ans += solve(i+1,'v',3,4);
      ans %=mod;
      //cout<<ans<<endl;
    }
    else
    {
      if(c1+c2==4)
      {
        if(c1==1 and c2==3)
        {
          ans += solve(i+1,'h',2,1);
          ans%=mod; 
          ans += solve(i+1,'h',3,1);
          ans%=mod; 
          ans += solve(i+1,'h',3,2);
          ans %=mod;
        }
        else
        {
          ans += solve(i+1,'h',1,2);
          ans %=mod;
          ans += solve(i+1,'h',1,3);
          ans %=mod;
          ans +=  solve(i+1,'h',2,3);
          ans %=mod;
        }
      }
      else if(c1+c2==5)
      {
        if(c1==2 and c2==3)
        {
          ans += solve(i+1,'h',1,2);
          ans %=mod;
          ans += solve(i+1,'h',3,1);
          ans %= mod;
          ans += solve(i+1,'h',3,2);
          ans %=mod;
        }
        else
        {
          ans += solve(i+1,'h',2,1);
          ans %=mod; 
          ans += solve(i+1,'h',1,3);
          ans %=mod; 
          ans +=  solve(i+1,'h',2,3);
          ans %=mod; 
        }
      }
      else
      {
        if(c1==1 and c2==2)
        {
          ans += solve(i+1,'h',3,1);
           ans %=mod; 
           ans  += solve(i+1,'h',2,1);
            ans %=mod; 
            ans += solve(i+1,'h',2,3);
             ans %=mod; 
        }
        else
        {
          ans += solve(i+1,'h',1,3);
           ans %=mod;  
           ans += solve(i+1,'h',1,2);
            ans %=mod; 
            ans +=  solve(i+1,'h',3,2);
             ans %=mod; 
        }
      }
    }
  }
  else
  {
    if(str[i]=='h')
    {
      if(c1==1)
      {
        ans += solve(i+1,'h',2,3);
         ans %=mod; 
         ans += solve(i+1,'h',3,2);
          ans %=mod; 
      }
      else if(c1==2)
      {
        ans += solve(i+1,'h',3,1);
         ans %=mod; 
         ans += solve(i+1,'h',1,3);
           ans %=mod; 
      }
      else
      {
        ans += solve(i+1,'h',2,1);
         ans %=mod; 
         ans += solve(i+1,'h',1,2);
         ans %=mod; 
      }
    }
    else
    {
      if(c1==1)
      {
        ans += solve(i+1,'v',2,4);
         ans %=mod; 
         ans += solve(i+1,'v',3,4);
         ans %=mod; 
      }
      else if(c1==2)
      {
        ans += solve(i+1,'v',1,4);
         ans %=mod;  
         ans += solve(i+1,'v',3,4);
         ans %=mod; 
      }
      else
      {
        ans += solve(i+1,'v',1,4);
         ans %=mod; 
         ans += solve(i+1,'v',2,4);
          ans %=mod; 
      }
    }
  }
  dp[i][idx][c1][c2] = ans;
  return ans;
}
int main(int argc, char* argv[])
{
  if(argc == 2 or argc == 3) 
     freopen(argv[1], "r", stdin);
  if(argc == 3) 
     freopen(argv[2], "w", stdout);
  ios::sync_with_stdio(false);

  cin>>n;
  string s1,s2;
  cin>>s1;
  cin>>s2;
  int i=0;
  while(i<n)
  {
    if(i!=n-1)
    {
      if(s1[i]==s1[i+1])
      {
        str += 'h';
        i+=2;
      }
      else
      {
        str += 'v';
        i++;
      }

    }
    else
    {
      str += 'v';
      i++;
    }
  }
  for(int i=0;i<55;i++)
  {
    for(int j=0;j<3;j++)
    {
      for(int k=0;k<5;k++)
      {
        for(int p=0;p<5;p++)
        {
          dp[i][j][k][p] = -1;
        }
      }
    }
  }
  //cout<<str<<endl;
  n = str.length();
  //cout<<n<<endl;
  ll ans=0;
  if(str[0]=='v')
  {
    ans = solve(1,'v',1,4);
    ans %=mod;
    ans += solve(1,'v',2,4);
    ans %=mod;
    ans += solve(1,'v',3,4);
    ans %=mod;

  }
  else
  {
    ans = solve(1,'h',1,2);
     ans %=mod;
     ans += solve(1,'h',1,3);
      ans %=mod;

      ans += solve(1,'h',2,1);
       ans %=mod;
       ans += solve(1,'h',2,3);
        ans %=mod;
        ans  += solve(1,'h',3,1);
         ans %=mod;
         ans += solve(1,'h',3,2);
          ans %=mod;
  }
  cout<<ans<<endl;

  return 0;
}

Measured memory_bytes: 256