AT_arc155_e [ARC155E] Split and Square
Description
[problemUrl]: https://atcoder.jp/contests/arc155/tasks/arc155_e
非負整数からなる集合 $ X $ に対し、$ X $ に属する $ 2 $ つの整数(同じ整数でもよい)のビット単位 $ \mathrm{XOR} $ として表せるような非負整数からなる集合を $ f(X) $ と表します。例えば $ X=\lbrace\ 1,\ 2,\ 4\rbrace $ に対し $ f(X) $ は $ \lbrace\ 0,\ 3,\ 5,\ 6\rbrace $ となります。
$ N $ 個の $ 2^M $ 未満の非負整数からなる集合 $ S=\lbrace\ A_1,\ A_2,\ \dots,\ A_N\rbrace $ が与えられます。
あなたは以下の操作を好きな回数行えます。
- $ S $ を $ 2 $ つの集合 $ T_1,\ T_2 $ に分ける( $ T_1,\ T_2 $ のいずれかが空集合になってもよい)。その後、 $ S $ を $ f(T_1),\ f(T_2) $ の和集合で置き換える。
$ S $ を $ \lbrace\ 0\rbrace $ にするのに必要な最小の操作回数を求めてください。
ビット単位 $ \mathrm{XOR} $ 演算とは 非負整数 $ A,\ B $ のビット単位 $ \mathrm{XOR} $ 、$ A\ \oplus\ B $ は、以下のように定義されます。
- $ A\ \oplus\ B $ を二進表記した際の $ 2^k $ ($ k\ \geq\ 0 $) の位の数は、$ A,\ B $ を二進表記した際の $ 2^k $ の位の数のうち一方のみが $ 1 $ であれば $ 1 $、そうでなければ $ 0 $ である。
例えば、$ 3\ \oplus\ 5\ =\ 6 $ となります (二進表記すると: $ 011\ \oplus\ 101\ =\ 110 $)。
一般に $ k $ 個の非負整数 $ p_1,\ p_2,\ p_3,\ \dots,\ p_k $ のビット単位 $ \mathrm{XOR} $ は $ (\dots\ ((p_1\ \oplus\ p_2)\ \oplus\ p_3)\ \oplus\ \dots\ \oplus\ p_k) $ と定義され、これは $ p_1,\ p_2,\ p_3,\ \dots,\ p_k $ の順番によらないことが証明できます。
Input Format
入力は以下の形式で標準入力から与えられる。
> $ N $ $ M $ $ A_1 $ $ A_2 $ $ \vdots $ $ A_N $
Output Format
答えを出力せよ。
Explanation/Hint
### 制約
- $ 1\ \leq\ N\ \leq\ 300 $
- $ 1\ \leq\ M\ \leq\ 300 $
- $ 0\ \leq\ A_i\