Ex - E or m

AtCoder
IDabc295_h
Time4000ms
Memory256MB
Difficulty
We have a grid $A$ with $N$ rows and $M$ columns. Initially, $0$ is written on every square. Let us perform the following operation. * For each integer $i$ such that $1 \le i \le N$, in the $i$\-th row, turn the digits in zero or more leftmost squares into $1$. * For each integer $j$ such that $1 \le j \le M$, in the $j$\-th column, turn the digits in zero or more topmost squares into $1$. Let $S$ be the set of grids that can be obtained in this way. You are given a grid $X$ with $N$ rows and $M$ columns consisting of `0`, `1`, and `?`. There are $2^q$ grids that can be obtained by replacing each `?` with `0` or `1`, where $q$ is the number of `?` in $X$. How many of them are in $S$? This count can be enormous, so find it modulo $998244353$. ## Constraints * $N$ and $M$ are integers. * $1 \le N,M \le 18$ * $X$ is a grid with $N$ rows and $M$ columns consisting of `0`, `1`, and `?`. ## Input The input is given from Standard Input in the following format: $N$ $M$ $X_{1,1} X_{1,2} \dots X_{1,M}$ $X_{2,1} X_{2,2} \dots X_{2,M}$ $\vdots$ $X_{N,1} X_{N,2} \dots X_{N,M}$ [samples]
Samples
Input #1
2 3
0?1
?1?
Output #1
6

The following six grids are in $S$.

011  011  001
010  011  110

001  011  011
111  110  111
Input #2
5 3
101
010
101
010
101
Output #2
0

$X$ may have no `?`, and the answer may be $0$.
Input #3
18 18
??????????????????
??????????????????
??????????????????
??????????????????
??????????????????
??????????????????
??????????????????
??????????????????
??????????????????
??????????????????
??????????????????
??????????????????
??????????????????
??????????????????
??????????????????
??????????????????
??????????????????
??????????????????
Output #3
462237431

Be sure to find the count modulo $998244353$.
API Response (JSON)
{
  "problem": {
    "name": "Ex - E or m",
    "description": {
      "content": "We have a grid $A$ with $N$ rows and $M$ columns. Initially, $0$ is written on every square.   Let us perform the following operation. *   For each integer $i$ such that $1 \\le i \\le N$, in the $i$\\-",
      "description_type": "Markdown"
    },
    "platform": "AtCoder",
    "limit": {
      "time_limit": 4000,
      "memory_limit": 262144
    },
    "difficulty": "None",
    "is_remote": true,
    "is_sync": true,
    "sync_url": null,
    "sign": "abc295_h"
  },
  "statements": [
    {
      "statement_type": "Markdown",
      "content": "We have a grid $A$ with $N$ rows and $M$ columns. Initially, $0$ is written on every square.  \nLet us perform the following operation.\n\n*   For each integer $i$ such that $1 \\le i \\le N$, in the $i$\\-...",
      "is_translate": false,
      "language": "English"
    }
  ]
}
Full JSON Raw Segments