#include <bits/stdc++.h>

#define ll long long
#define ld long double
using namespace std;

int main() {
    ios_base::sync_with_stdio(false);
    cin.tie(0);
    ll mod = 1000000007;
    ll n;
    cin >> n;
    set<pair<ll, ll>> date;
    date.insert({1, 2});
    date.insert({1, 3});
    date.insert({3, 2});
    date.insert({2, 1});
    date.insert({3, 1});
    date.insert({2, 3});
    date.insert({1, 1});
    date.insert({2, 2});
    date.insert({3, 3});
    string qq,ww;
    cin >> qq >> ww;
    ll dp[1000][n + 10];
    for (ll i = 1; i <= 100; i++) {
        for (ll j = 1; j <= n; j++) {
            dp[i][j] = 0;
        }
    }
    if (qq[0] != ww[0]) {
        for (auto i = date.begin(); i != date.end(); i++) {
            if (i->first != i->second) {
                ll t = i->first * 10 + i->second;
                dp[t][1] = 1;
            }
        }
    } else {
        for (auto i = date.begin(); i != date.end(); i++) {
            if (i->first == i->second) {
                ll t = i->first * 10 + i->second;
                dp[t][1] = 1;
            }
        }
    }
    for (ll i = 2; i <= n; i++) {
        if (qq[i - 2] == qq[i-1] && ww[i - 1] == ww[i - 2]) {
            //cout << p[2][i-1] << " " << p[2][i] << i << endl;
            for (auto j = date.begin(); j != date.end(); j++) {
                for (auto k = date.begin(); k != date.end(); k++) {
                    if (j->first == k->first && j->second == k->second) {
                        //if (j->first != j->second) {

                        ll tk = k->first * 10 + k->second;
                        ll tj = j->first * 10 + j->second;
                        dp[tk][i] += dp[tj][i - 1];
                        dp[tk][i] %= mod;
                        //}
                    }
                }
            }
        } else if (qq[i-1] == ww[i-1]) {
            for (auto j = date.begin(); j != date.end(); j++)
                for (auto k = date.begin(); k != date.end(); k++) {
                    if (j->first != k->first && j->second != k->second && k->first == k->second) {
                        ll tj = j->first * 10 + j->second;
                        ll tk = k->first * 10 + k->second;
                        dp[tk][i] = (dp[tk][i] + dp[tj][i - 1]) % mod;
                    }
                }
        } else {
            for (auto j = date.begin(); j != date.end(); j++)
                for (auto k = date.begin(); k != date.end(); k++) {
                    if (j->first != k->first && j->second != k->second && k->first != k->second) {
                        ll tj = j->first * 10 + j->second;
                        ll tk = k->first * 10 + k->second;
                        dp[tk][i] = (dp[tk][i] + dp[tj][i - 1]) % mod;
                    }
                }
        }
    }
    ll answ = 0;
    for (auto i = date.begin(); i != date.end(); i++) {
        if (qq[n-1] == ww[n-1]) {
            if (i->first == i->second) {
                ll t = i->first * 10 + i->second;
                answ = (answ + dp[t][n]) % mod;
            }
        } else{
            if (i->first != i->second) {
                ll t = i->first * 10 + i->second;
                answ = (answ + dp[t][n]) % mod;
            }
        }
    }
    cout << answ << endl;
    exit(0);
    return 0;
}

Measured memory_bytes: 256