#ZF1116. 均匀分布

均匀分布

Description

我们有一个 HHWW 列的网格,设 (i,j)(i,j) 是第 ii 行第 jj 列的格子。

你将得到 HH

个字符串 S1,S2,,SHS_1, S_2, \cdots, S_H 来描述这些格子:

  • 如果字符串 SiS_i 中的第 jj 个字符是 ‘R’\texttt{`R'},说明 (i,j)(i, j) 被涂成红色。
  • 如果字符串 SiS_i 中的第 jj 个字符是 ‘B’\texttt{`B'},说明 (i,j)(i, j) 被涂成蓝色。
  • 如果字符串 SiS_i 中的第 jj 个字符是 ‘.’\texttt{`.'},说明 (i,j)(i, j) 没有被上色。

令未上色的格子数量为 KK,在把这些格子上色成红色或蓝色的 2K2^K 种方法中,有多少种能够满足以下条件?

  • 通过反复向右或向下移动一格来从 (1,1)(1,1) 移动到 (H,W)(H,W) 的过程中,无论所走的路径如何,途径过的红色格子数量都相同。

答案可能很大,请将答案对 998244353998244353 取模。

Format

Input

第一行两个正整数 H,WH, W (2H,W500)(2 \leq H, W \leq 500),分别表示网格的行数和列数。

接下来 HH 行,每行一个长度为 WW 的字符串 SiS_i,用来描述每个格子的上色情况,其中 SiS_i 仅由 ‘R’,‘B’,‘.’\texttt{`R',`B',`.'} 三种字符组成。

Output

输出一个整数,表示能满足条件的上色方法数对 998244353998244353 取模的结果。

Samples

2 2
B.
.R
2

说明

有两种方法可以通过反复向右或向下移动来从 (1,1)(1, 1)(2,2)(2, 2),如下所示:

(1,1)(1, 1)(1,2)(1, 2)(2,2)(2, 2)

(1,1)(1, 1)(2,1)(2, 1)(2,2)(2, 2)

如果 (1,2)(1, 2)(2,1)(2, 1) 的颜色不同,则上述两条路径将包含不同数量的红色方块,这违反了条件。

但如果 (1,2)(1, 2)(2,1)(2, 1) 的颜色相同,那么这两条路径将包含相同数量的红色方块,满足条件。因此,有两种方法可以满足条件。

3 3
R.R
BBR
...
0

说明

没有办法满足题目条件.

2 2
BB
BB
1

Limitation

1s, 1024KiB for each test case.