你知道“横滨现象”吗?当三名程序员围坐在一张桌子旁,共同将一支笔悬在棋盘上方时,这种现象就会发生。棋盘上画着一个方格网,每个方格都标有一个字母。尽管参与者并没有刻意移动笔,但笔尖仿佛有了自己的意志,落在了其中一个标有 Y 的方格上,然后开始在棋盘上移动。经过的方格依次标有 O、K、O、H、A 和 M,最后笔尖停在标有 A 的方格上。
我们将笔尖移动轨迹所经过的方格序列称为“YOKOHAMA 轨迹”。YOKOHAMA 轨迹定义如下:
- 它是由给定方格网中的八个方格组成的序列。
- 序列中的每个方格(第一个除外)都与其序列中的前一个方格共边(即边相邻)。
- 序列中八个方格所标的字母依次为 Y、O、K、O、H、A、M 和 A。
注意,同一个方格可以在序列中出现多次。
图 A.1 (a) 是对应样例输入 1 的棋盘示意图。图 A.1 (b) 和 (c) 展示了两种 YOKOHAMA 轨迹。两条轨迹都从上排最左侧的方格开始。在图 A.1 (c) 所示的轨迹中,标有 O 的同一个方格出现了两次。
图 A.1. 一个棋盘以及两条 YOKOHAMA 轨迹
给定一个方格网,每个方格标有 A、H、K、M、O 或 Y 这六个字母之一。你的任务是计算在该棋盘上可能存在多少种不同的 YOKOHAMA 轨迹。
输入格式
输入包含单个测试用例,格式如下:
$n$ $m$ $x_{1,1} \dots x_{1,m}$ $\vdots$ $x_{n,1} \dots x_{n,m}$
前两个整数 $n$ 和 $m$ ($1 \le n \le 10, 1 \le m \le 10$) 描述了网格的大小。网格由 $n \times m$ 的矩阵排列而成。接下来的 $n$ 行描述了方格上标记的字母。网格中第 $i$ 行第 $j$ 列的方格 ($1 \le i \le n, 1 \le j \le m$) 标有字母 $x_{i,j}$。每个 $x_{i,j}$ 均为 A、H、K、M、O 或 Y 这六个字母之一。
输出格式
输出一行,包含不同 YOKOHAMA 轨迹的数量。
样例
样例输入 1
2 4 YOHA OKAM
样例输出 1
8
样例输入 2
3 4 YOKH OKHA KHAM
样例输出 2
0
样例输入 3
3 6 MAYOHA AHOKAM MAYOHA
样例输出 3
80