P6582 座位调查
题目背景
ION 2048 结束了,但 ℲƆƆ 发现,一个机房里发生了性质恶劣的作弊事件。
题目描述
Youyou 奉命来到该机房进行调查。已知该机房是一个 $n \times m$ 的矩阵,每个位置是 `O` 或 `X`,其中 `O` 表示该位置是座位,`X` 表示该位置是空地。**每个座位上都必须坐有学生**,当然,至少有一个座位。
要想查明作弊的学生,Youyou 必须知道这个机房中的考生有多少种座位的可能。ION 2048 有来自 $k$ 个学校的考生参加,且座位满足以下要求:
* 考场中的座位是由若干长条形组成的,这样方便管理;
* 任意考生不可能和来自同学校的考生座位相邻,可以避免交流。
两个座位是相邻的当且仅当它们有一条**公共边**。
条形定义为除了两个端点只有一个相邻的座位外,每个座位都恰好有两个相邻座位,当然,一个座位也属于条形的。
例如,下面的都**是**「条形的座位」。

下面的都**不是**「条形的座位」。

注:方格中的数字表示与其相邻的座位的个数。
试求出合法的座位方案总数,由于结果可能很大,请输出结果对质数 $998244353$ 取模的结果。如果这个机房本身就不可能是 ION 2048 的考试机房,答案应当是 $0$。
输入格式
第一行三个正整数,$n,m$ 和 $k$。
接下来 $n$ 行,每行 $m$ 个字符,表示机房的情况。保证只有 `O`,`X` 两种字符,且 `O` 至少出现一次。
输出格式
一行一个整数,表示结果对质数 $998244353$ 取模的结果。
说明/提示
**样例 1 解释**
可能有以下 $4$ 种情况,红色代表学校 $1$ 的学生,蓝色代表学校 $2$ 的学生:

**样例 2 解释**
可能有以下 $12$ 种情况,红色代表学校 $1$ 的学生,蓝色代表学校 $2$ 的学生,黄色代表学校 $3$ 的学生:

**样例 3 解释**
机房不是条形安排的,所以答案为 $0$。
**数据规模与约定**
* Subtask 1(10 分):$n = 1$,$k = 2$;
* Subtask 2(15 分):$n = 1$,$2 \le m,k \le 8$;
* Subtask 3(15 分):$n = 1$;
* Subtask 4(20 分):保证座位设置是条形的,$k = 2$;
* Subtask 5(20 分):保证座位设置是条形的;
* Subtask 6(20 分):无特殊限制。
对于全部的数据,$1 \le n, m \le 10^3$,$2 \le k \le 10^9$。