
import java.util.Scanner

object Main extends App {

  val MOD = 1000L * 1000L * 1000L + 7

  implicit class RichLong(value :Long) {
    def add(l: Long): Long = (value + l) % MOD
  }

  val sc = new Scanner(System.in)

  val n = sc.nextInt()
  val tmp1, tmp2 = sc.next()

  val t1 = tmp1.zipWithIndex
    .filter(t => t._2 == 0 || (tmp1(t._2 - 1) != t._1))
    .map(_._1)
  val t2 = tmp2.zipWithIndex
    .filter(t => t._2 == 0 || (tmp2(t._2 - 1) != t._1))
    .map(_._1)

  val sum = t1.zip(t2)
    .foldLeft(Array.fill(9)(-1L)) {
      case (mem, (c1, c2)) =>
        if (mem(0) < 0L) {
          if (c1 == c2) {
            val seq = Array.fill(9)(0L)
            seq(0) = 1
            seq(1) = 1
            seq(2) = 1
            seq
          } else {
            val seq = Array.fill(9)(1L)
            seq(0) = 0
            seq(1) = 0
            seq(2) = 0
            seq
          }
        } else {
          if (c1 == c2) {
            val seq = Array.fill(9)(0L)
            seq(0) = mem(1).add(mem(2))
              .add(mem(4)).add(mem(7))
            seq(1) = mem(2).add(mem(0))
              .add(mem(5)).add(mem(8))
            seq(2) = mem(0).add(mem(1))
              .add(mem(3)).add(mem(6))
            seq
          } else {
            val seq = Array.fill(9)(0L)
            seq(3) = mem(2).add(mem(4))
              .add(mem(5)).add(mem(6))
            seq(4) = mem(0).add(mem(3))
              .add(mem(5)).add(mem(7))
            seq(5) = mem(1).add(mem(3))
              .add(mem(4)).add(mem(8))
            seq(6) = mem(2).add(mem(7))
              .add(mem(8)).add(mem(3))
            seq(7) = mem(0).add(mem(8))
              .add(mem(6)).add(mem(4))
            seq(8) = mem(1).add(mem(6))
              .add(mem(7)).add(mem(5))
            seq
          }
        }
    }

  println(sum.foldLeft(0L) {
    case (s, v) => s.add(v)
  })
}
