#P7523. Cytoid

Cytoid

题目背景

Welcome to Cytoid!

众所周知,尽管很菜,但 colazcy 仍然很喜欢玩 Cytus。

题目描述

一天,colazcy 又在越级打谱。不到一分钟,colazcy 把手机一摔,骂道:“什么垃圾铺面!” 于是他准备在 Cytoid 上面做一个自制铺恶心别人。

colazcy 准备上一波劲爆 mm 押,共有 nn 排。也就是说,他的铺面是一个 n×mn\times m 的矩阵,其中每一个位置可以是 Drag 也可以是 Click。colazcy 已经确定了其中一些位置应该是什么元素,但剩下的还没有确定。

但是 colazcy 发现,他铺面对应的矩形如果有一个子矩形中所有元素都是 Drag,那么玩家就可以一直按住糊过去。colazcy 定义一张铺面的简单度为这张铺面对应的矩形中全都是 Drag 的子矩形个数。

现在 colazcy 把他还未完成的铺面给了你,希望你告诉他:如果他等概率随机地把剩下没有决定的元素填成 Drag / Click,最终铺面简单度的期望是多少。不难观察到答案总是一个有理数,你只需要输出这个答案对 998244353998244353 取模的结果。如果你不知道如何将一个有理数对质数取模,可以参考 有理数取模

输入格式

第一行两个正整数 n,mn,m,分别代表矩阵的行数和列数。

接下来 nn 行,第 ii 行有一个长度为 mm 的字符串,其第 jj 位为 o 代表这个位置被确定为 Drag,为 x 代表其被确定为 Click,为 ? 表示这个位置还没有确定。

输出格式

一行一个整数,代表简单度的期望对 998244353998244353 取模的结果。

2 2
oo
xo
5
2 2
oo
?o
7
3 4
o?o?
?xox
o?xo
499122189

提示

样例解释

样例一:整个铺面已经确定,而简单度 = 全是 Drag 的子矩阵数目 = 55

样例二:只有一个位置没有确定:当这个位置填 Drag 时,简单度为 99;当这个位置填 Click 时,简单度为 55。则期望简单度为 9+52=7\dfrac{9+5}2=7

数据范围

对于全部数据,有 1n,m1001\le n,m\le 100

Subtask 1 (15 pts):保证没有尚未确定的元素(即输入没有 ?)。

Subtask 2 (15 pts):保证尚未确定的元素个数 3\le 3

Subtask 3 (30 pts):保证 n30n\le 30

Subtask 4 (40 pts):无特殊限制。