#P1301. 调频

调频

调频

题目描述

在你优化完公司的“宝贝”代码之后,CEIT的服务器资源利用效率得到了极大的提升,这让Orange十分高兴,因为他可以用更多的资源来计算他课题的重要方程了!这也让Orange有了想把你招为助手(黑奴)的打算...

波是用来传输信息的重要方式,而一般用来传输信息的波,需要发射端和接收端两者的频率相同。Orange正在尝试一个跨越维度传递信息的课题,而波正是他研究的关键,因此他想用这个问题来作为你面试的一题。

现在空间中存在 nn 个频率 aia_i,并且Orange有一种特殊的调频方式,能够将选定的一个频率 aia_i 调制成 ai and Xa_i \ \mathrm{and} \ X,即 aiai and Xa_i \leftarrow a_i \ \mathrm{and} \ X。要实现跨越维度的信息传输,至少需要空间中存在两个相同的频率。由于使用调频的过程十分复杂,Orange想让你计算出,若要满足空间中存在两个相同的频率,最少需要进行多少次调频?如果无论如何也无法得到两个相同的频率,请输出-1

AND\mathrm{AND}:表示位运算按位与,按位与是一种二进制运算,它从低到高比较两个数的每一个二进制位(不足则用前导0补齐),只有当两个位都是1时,结果位才为1,否则为0。例如: $7 \ \mathrm{and} \ 3 = (111)_2 \ \mathrm{and} \ (011)_2 = (011)_2 = 3。$

输入格式

输入包含多组测试数据,第一行为一个整数 TT,表示测试数据数量。 对于每组测试数据: 第一行包含两个整数 n,Xn,X,表示频率数量和调频参数。 第二行包含 nn 个整数,表示每个频率的具体数值。

数据范围

2n1052 \le n \le 10^5 1X,ai1051 \le X,a_i \le 10^5 n2×105\sum n \le 2 \times 10^5

输出格式

对于每组测试数据,输入一行,包含一个整数表示答案。

样例 #1

样例输入 #1

3
4 3
1 2 3 7
2 228
1 1
3 7
1 2 3

样例输出 #1

1
0
-1

提示

对于第一组测试数据,可以对频率 77 进行调制,调制之后变为 7 and 3=37 \ \mathrm{and} \ 3 = 3,此时出现两个相同的频率 33,因此答案为1。

对于第二组测试数据,本身存在两个相同的频率,因此无需调整。

对于第三组测试数据,可以证明无论如何调整,都无法使得其中出现两个相同的频率。