#arc155e. [arc155_e]Split and Square

[arc155_e]Split and Square

问题陈述

对于一个非负整数集合 XX,记 f(X)f(X) 为由 XX 中的两个整数(可能相同)进行按位异或运算得到的非负整数构成的集合。例如对于 X={1,2,4}X=\lbrace 1, 2, 4\rbrace,有 f(X)={0,3,5,6}f(X)=\lbrace 0, 3, 5, 6\rbrace

给定一个由 NN 个小于 2M2^M 的非负整数组成的集合 S={A1,A2,,AN}S=\lbrace A_1, A_2, \dots, A_N\rbrace

你可以执行以下操作任意次数。

  • SS 分成两个集合 T1T_1T2T_2(其中之一可以为空)。然后用 f(T1)f(T_1)f(T2)f(T_2) 的并集替换 SS

找到使得 S={0}S=\lbrace 0\rbrace 所需的最小操作次数。

什么是按位异或运算?

非负整数 AABB 的按位异或运算 ABA \oplus B 定义如下。

  • 当以二进制形式表示 ABA \oplus B 时,第 kk 最低位(k0k \geq 0)为 11 当且仅当 AABB 的第 kk 最低位中只有一个为 11,否则为 00

例如,35=63 \oplus 5 = 6(二进制表示:011101=110011 \oplus 101 = 110)。 一般地,kk 个非负整数 p1,p2,p3,,pkp_1, p_2, p_3, \dots, p_k 的按位异或运算被定义为 $(\dots ((p_1 \oplus p_2) \oplus p_3) \oplus \dots \oplus p_k)$,可以证明这与 p1,p2,p3,,pkp_1, p_2, p_3, \dots, p_k 的顺序无关。

约束条件

  • 1N3001 \leq N \leq 300
  • 1M3001 \leq M \leq 300
  • 0Ai<2M0 \leq A_i < 2^{M}
  • Ai (1iN)A_i\ (1\leq i \leq N) 互不相同。
  • 输入中的每个 AiA_i 在二进制下恰好有 MM 位(可能有前导零)。
  • 输入中的所有值均为整数。

输入

输入以以下格式从标准输入读取:

NN MM A1A_1 A2A_2 \vdots ANA_N

输出

输出答案。


示例输入 1

4 2
00
01
10
11

示例输出 1

2

在第一次操作中,你可以将 SS 分成 T1={0,1},T2={2,3}T_1=\lbrace 0, 1\rbrace, T_2=\lbrace 2, 3\rbrace,此时 $f(T_1) =\lbrace 0, 1\rbrace, f(T_2) =\lbrace 0, 1\rbrace$,用 lbrace0,1rbrace\\lbrace 0, 1\\rbrace 替换 SS

在第二次操作中,你可以将 SS 分成 T1={0},T2={1}T_1=\lbrace 0\rbrace, T_2=\lbrace 1\rbrace,使得 S={0}S=\lbrace 0\rbrace

无法在少于两次操作中使得 S={0}S=\lbrace 0\rbrace,因此答案为 22


示例输入 2

1 8
10011011

示例输出 2

1

在第一次操作中,你可以将 SS 分成 T1={155},T2={}T_1=\lbrace 155\rbrace, T_2=\lbrace \rbrace,使得 S={0}S=\lbrace 0\rbrace。注意 T1T_1T2T_2 可以为空。


示例输入 3

1 2
00

示例输出 3

0

从一开始就有 S={0}S=\lbrace 0\rbrace,不需要任何操作。


示例输入 4

20 20
10011011111101101111
10100111100001111100
10100111100110001111
10011011100011011111
11001000001110011010
10100111111011000101
11110100001001110010
10011011100010111001
11110100001000011010
01010011101011010011
11110100010000111100
01010011101101101111
10011011100010110111
01101111101110001110
00111100000101111010
01010011101111010100
10011011100010110100
01010011110010010011
10100111111111000001
10100111111000010101

示例输出 4

10