编程题
### 问题描述
在一次激烈的犯罪现场,鲁邦发现了一只神秘的密码盒,里面藏有重要的情报。然而,密码盒被一种复杂的加密系统保护着,只有通过一系列操作才能打开。
密码盒的加密系统是一个数字数组 $A$ 和一个整数 $X$。系统允许鲁邦执行以下操作:
选择两个不同的索引 $i$ 和 $j$,并同时将 $A_i$ 和 $A_j$ 设为 $(A_i \oplus A_j) | X$。其中 $\oplus$ 和 $|$ 分别表示位异或和位或运算。
密码盒将在数组中所有元素都变为奇数的时候打开。鲁邦想要知道,最少需要进行多少次操作才能打开密码盒。如果无法打开密码盒,鲁邦需要知道这一情况,以便另寻他法。
请你帮助鲁邦计算出打开密码盒所需的最小操作次数。
### 输入格式
第一行包含两个由空格分隔的整数 $N$ 和 $X$,分别表示数字数组的大小和密码盒给定的整数。
接下来的一行包含 $N$ 个由空格分隔的整数,表示数字数组 $A$ 的元素。
数据范围保证:$2 \leq N \leq 10^5$,$0 \leq X < 2^{30}$,$0 \leq A_i < 2^{30}$。
### 输出格式
输出打开密码盒所需的最小操作次数。如果无法打开密码盒,则打印 $-1$。
### 输入样例
```text
5 4
2 3 4 17 9
```
### 输出样例
```text
2
```
### 说明
鲁邦可以通过 2 次操作打开密码盒:
- 在第一次操作中,鲁邦选择 $i = 1$,$j = 5$。这里,$(A_i \oplus A_j) | X = (2 \oplus 9) | 4 = 11 | 4 = 15$。因此,新的数组变为 $[15, 3, 4, 17, 15]$。
- 在第二次操作中,鲁邦选择 $i = 4$,$j = 3$。这里,$(A_i \oplus A_j) | X = (17 \oplus 4) | 4 = 21 | 4 = 21$。因此,新的数组变为 $[15, 3, 21, 21, 15]$。
现在,密码盒打开了。可以证明鲁邦不能在少于 2 次操作的情况下打开密码盒。