fun main(args: Array<String>) {
    val mod = 1000000007L
    
    val N = readInputLine().toInt()
    
    val S = Array(2) { readInputLine().toCharArray() }
    
    var (ans, index) = if (S[0][0] == S[1][0]) Pair(3L, 1) else Pair(6L, 2)
    
    while (index < N) {
        if (S[0][index] == S[1][index]) {
            // index列のドミノは縦
            if (S[0][index - 1] == S[1][index - 1]) {
                // index - 1列のドミノも縦
                // 置き方は前の列の色以外のいずれか
                ans *= 2L
            }
            // index - 1列のドミノが横の場合は置き方1通りのみ
            index++
        } else {
            // index列のドミノは横
            if (S[0][index - 1] == S[1][index - 1]) {
                // index - 1列のドミノは縦
                // 置き方は前の列の色以外2色を上下いずれかに置く
                ans *= 2L
            } else {
                // index - 1列のドミノは横
                // 置き方は前の列と逆、前の列と逆かつ片方未使用色に置き換え * 2の3通り
                ans *= 3L
            }
            index += 2
        }
        ans %= mod
    }

    println(ans)
}

fun readInputLine(): String {
    return readLine()!!
}
