P6582 座位调查

题目背景

ION 2048 结束了,但 ℲƆƆ 发现,一个机房里发生了性质恶劣的作弊事件。

题目描述

Youyou 奉命来到该机房进行调查。已知该机房是一个 $n \times m$ 的矩阵,每个位置是 `O` 或 `X`,其中 `O` 表示该位置是座位,`X` 表示该位置是空地。**每个座位上都必须坐有学生**,当然,至少有一个座位。 要想查明作弊的学生,Youyou 必须知道这个机房中的考生有多少种座位的可能。ION 2048 有来自 $k$ 个学校的考生参加,且座位满足以下要求: * 考场中的座位是由若干长条形组成的,这样方便管理; * 任意考生不可能和来自同学校的考生座位相邻,可以避免交流。 两个座位是相邻的当且仅当它们有一条**公共边**。 条形定义为除了两个端点只有一个相邻的座位外,每个座位都恰好有两个相邻座位,当然,一个座位也属于条形的。 例如,下面的都**是**「条形的座位」。 ![](https://cdn.luogu.com.cn/upload/image_hosting/g7ew1c6c.png) 下面的都**不是**「条形的座位」。 ![](https://cdn.luogu.com.cn/upload/image_hosting/x7z4d6yx.png) 注:方格中的数字表示与其相邻的座位的个数。 试求出合法的座位方案总数,由于结果可能很大,请输出结果对质数 $998244353$ 取模的结果。如果这个机房本身就不可能是 ION 2048 的考试机房,答案应当是 $0$。

输入格式

第一行三个正整数,$n,m$ 和 $k$。 接下来 $n$ 行,每行 $m$ 个字符,表示机房的情况。保证只有 `O`,`X` 两种字符,且 `O` 至少出现一次。

输出格式

一行一个整数,表示结果对质数 $998244353$ 取模的结果。

说明/提示

**样例 1 解释** 可能有以下 $4$ 种情况,红色代表学校 $1$ 的学生,蓝色代表学校 $2$ 的学生: ![](https://cdn.luogu.com.cn/upload/image_hosting/d6riqiby.png) **样例 2 解释** 可能有以下 $12$ 种情况,红色代表学校 $1$ 的学生,蓝色代表学校 $2$ 的学生,黄色代表学校 $3$ 的学生: ![](https://cdn.luogu.com.cn/upload/image_hosting/4ni46qzf.png) **样例 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$。