编程题
### 问题描述
丽丽发现了一只藏有重要情报的密码盒。然而,密码盒被一种加密系统保护着。
密码盒的加密系统上包含一个数组 $A$ 和一个整数 $X$,并允许持有者执行以下操作:选择两个不同的索引 $i$ 和 $j$,并同时将 $A_i$ 和 $A_j$ 设为 $(A_i \oplus A_j) | X$。其中 $\oplus$ 和 $|$ 分别表示位异或和位或运算。
丽丽通过判断,确认要想打开密码盒,只有将数组中所有元素都变为奇数才行。作为丽丽的助手,请你帮助丽丽计算最少需要进行多少次操作才能打开密码盒。
### 输入格式
第一行包含两个由空格分隔的整数 $N$ 和 $X$,分别表示数字数组的大小和密码盒给定的整数。
接下来的一行包含 $N$ 个由空格分隔的整数,表示数字数组 $A$ 的元素。
数据范围保证:$2 \leq N \leq 10^3$,$0 \leq X < 2^{15}$,$0 \leq A_i < 2^{15}$。
### 输出格式
输出打开密码盒所需的最小操作次数。如果无法打开密码盒,则打印 $-1$。
### 输入样例
```text
5 4
2 3 4 17 9
```
### 输出样例
```text
2
```