2021 年。人们仍然关心 COVID,NNSU 刚刚赢得了 ICPC 2020,而他已经疯了,只是我们还不知道他疯到了什么程度。我们正在为 SnackDown 决赛寻找题目,7dan 提出了这一道。出于某种原因,我们当时决定不使用它,但在内部它被称为“2021 年的最佳题目”。
给定一个数字数组 $B$ 和一个数字 $X$。计算(对 $998\,244\,353$ 取模)集合 $\{1, 2, \dots, X\}$ 的子集 $S$ 的数量,使得若将这些数字视为 $\mathbb{Z}_2$ 上的向量(以按位异或作为向量加法),$B$ 是 $S$ 的一组基。$B$ 被视为 $S$ 的一组基,当且仅当它是满足“$S$ 中的每个元素都可以表示为 $B$ 中元素的按位异或和”这一条件的最小数组。
输入格式
第一行包含两个整数 $n$ 和 $m$ ($1 \le n, m \le 2000$),分别表示 $B$ 的大小和数字的二进制长度。$B$ 中的所有元素和数字 $X$ 将以长度恰好为 $m$ 的二进制字符串形式给出(可能包含前导零)。
接下来的 $n$ 行,每行包含一个长度为 $m$ 的二进制字符串,表示 $B$ 中的一个元素。
最后一行包含一个长度为 $m$ 的二进制字符串,表示数字 $X$。
输出格式
你自己想吧。
样例
样例输入 1
4 4 0001 0010 0100 1000 1101
样例输出 1
7364
样例输入 2
3 2 00 00 00 11
样例输出 2
0
样例输入 3
2 3 110 101 101
样例输出 3
1
样例输入 4
3 10 1111100110 0011110100 0101100001 1110000001
样例输出 4
38