你听说过 Hex 游戏吗?Hex 是一款在六边形棋盘上进行的双人游戏。游戏规则是红方和蓝方轮流在棋盘的空位上放置各自颜色的棋子,直到红方将棋盘的顶部和底部连通,或者蓝方将棋盘的左侧和右侧连通。率先达成目标的玩家获胜。这里的连通条件是:必须存在一条该玩家颜色的路径,连接两个至少共用一条边的相邻六边形。例如,以下两个 Hex 游戏棋盘对蓝方而言都是胜利局面。
可以证明,Hex 游戏中只会有一名获胜者。
Bobo 也想玩 Hex,但他认为在棋盘上使用六边形格子太复杂了。于是,他发明了一种名为 Square 的新游戏!Square 的规则与 Hex 类似,红方和蓝方轮流在棋盘的空位上放置各自颜色的棋子,直到红方将棋盘的顶部和底部连通,或者蓝方将棋盘的左侧和右侧连通。然而,在 Square 中,棋盘是由许多小正方形组成的矩形,连通条件保持不变,即存在一条该玩家颜色的路径,连接两个至少共用一条边的相邻正方形(即四连通)。以下两个 $5 \times 6$ 棋盘上的 Square 棋局分别是红方和蓝方的胜利局面。
Bobo 很兴奋地与他的朋友 oboB 分享了这个 Square 游戏。然而,oboB 立即意识到一个问题:Bobo 的 Square 游戏可能会导致平局!例如,以下两个 $5 \times 6$ 棋盘上的 Square 棋局都是平局,因为双方都已无法落子,且红方棋子没有连通棋盘的顶部和底部,蓝方棋子也没有连通棋盘的左侧和右侧。
“但是……应该不会有很多平局吧,对吧?”Bobo 固执地说。为了反驳 Bobo,oboB 画了一个 $n$ 行 $m$ 列的红蓝格子矩阵。“我从中随机选择一个子矩阵作为游戏棋盘,它很有可能是平局!”Bobo 似乎同意了,但他突然想到了别的事情,“为了使 Square 的规则有效,所选的子矩阵必须满足顶部和底部全是红色格子,且左侧和右侧全是蓝色格子!(对应示例矩阵中的红/蓝线)”oboB 别无选择,只能同意 Bobo 的论点,“那么你能统计一下有多少个游戏棋盘满足这个条件吗?”
形式化地,给定一个 $n$ 行 $m$ 列的矩阵 $A$,其中每个格子要么是红色(‘R’)要么是蓝色(‘B’),你需要统计满足以下条件的四元组 $(x_1, x_2, y_1, y_2)$ 的数量(其中 $(x_1, y_1)$ 和 $(x_2, y_2)$ 是你所选子矩阵的左上角和右下角坐标):
- $2 \le x_1 \le x_2 \le n - 1, 2 \le y_1 \le y_2 \le m - 1$(你必须选择一个子矩阵)
- $\forall y_1 \le j \le y_2, A_{x_1-1,j} = A_{x_2+1,j} = \text{‘R’}$(子矩阵的顶部和底部必须全为红色)
- $\forall x_1 \le i \le x_2, A_{i,y_1-1} = A_{i,y_2+1} = \text{‘B’}$(子矩阵的左侧和右侧必须全为蓝色)
- 不存在一个格子序列 $P = ((i_1, j_1), (i_2, j_2), \dots, (i_\ell, j_\ell))$ 满足: (a) $\ell \ge 1, i_1 = x_1, i_\ell = x_2$ (b) $\forall 1 \le k \le \ell, x_1 \le i_k \le x_2 \land y_1 \le j_k \le y_2$ (c) $\forall 1 \le k \le \ell, A_{i_k,j_k} = \text{‘R’}$ (d) $\forall 1 \le k \le \ell - 1, |i_k - i_{k+1}| + |j_k - j_{k+1}| = 1$ (即不存在连接顶部和底部的红色路径)
- 不存在一个格子序列 $P = ((i_1, j_1), (i_2, j_2), \dots, (i_\ell, j_\ell))$ 满足: (a) $\ell \ge 1, j_1 = y_1, j_\ell = y_2$ (b) $\forall 1 \le k \le \ell, x_1 \le i_k \le x_2 \land y_1 \le j_k \le y_2$ (c) $\forall 1 \le k \le \ell, A_{i_k,j_k} = \text{‘B’}$ (d) $\forall 1 \le k \le \ell - 1, |i_k - i_{k+1}| + |j_k - j_{k+1}| = 1$ (即不存在连接左侧和右侧的蓝色路径)
输入格式
第一行包含两个整数 $n$ 和 $m$ ($1 \le n, m \le 1500$),分别表示矩阵的行数和列数。接下来的 $n$ 行中,第 $i$ ($1 \le i \le n$) 行包含一个长度为 $m$ 的字符串,仅由 ‘R’ 和 ‘B’ 组成。第 $i$ 行的第 $j$ ($1 \le j \le m$) 个字符表示矩阵中第 $i$ 行第 $j$ 列格子的颜色,其中 ‘R’ 代表红色,‘B’ 代表蓝色。
输出格式
输出一行一个整数,表示构成 Square 棋盘平局的子矩阵数量(形式化定义已在题目描述中给出)。
样例
样例输入 1
6 6 RRRRRB BRRRBB BBRBBB BBBRBB BBRRRB BRRRRR
样例输出 1
2
样例输入 2
5 5 BRRRB BBRRB BRBRB BRRBB BRRRB
样例输出 2
1
样例输入 3
7 7 BRRRRRB BRBBBRB BBRBRBB BRRRRRB BBRBRBB BRBBBRB BRRRRRB
样例输出 3
7
样例输入 4
3 3 RRR BRB RRR
样例输出 4
0
样例输入 5
20 20 RRRRRRRRRRRRRRRRRRRR BRRRRRRRRRRRRRRRRRRB BBBBBBRRBBBBRRRRRRRB BRRRRBBBBRRBRRRRRRRB BRRRRRRRRRRBRRRRRRRB BBBBBBBBBBBBRRRRRRRB BRRRRRRRRRRRRRRRRRRB BRRRRRRRRRRRRRRRRRRB BBBBBBBBBRRRRRRRRRRB BRRRRRRRBRBBBBRRRRRB BRRRRRRRBBBRRBRRRRRB BRRRRRRRRRRRRBRRRBBB BRRRRRRRRRRRRBRBBBRB BBBBBBBRRRRRRBBBRRRB BRRRRRBRRRRRRRRRRRRB BRRRRRBRRRRRRRRRRRRB BRRRRRBRRRRRRRRRRRRB BBBBBBBBBBRRRRRRRRRB BRRRRRRRRRRRRRRRRRRB RRRRRRRRRRRRRRRRRRRR
样例输出 5
0
说明
为了辅助理解,我们提供前两个样例测试的图形说明。第一个样例测试中的两个有效子矩阵如下所示。
第二个样例测试中的一个有效子矩阵如下所示。