#include <bits/stdc++.h>
#define ll long long int
#define ld long double
using namespace std;
ll n;
vector<ll> v;
int solve(int bit, ll k)
{
int ans = n + 1;
unordered_map<ll, int> m;
ll curr_xor = 0;
vector<ll> prefix_xor(n + 1);
for (int i = 0; i < n; i++)
{
ll curr = ((v[i] >> bit) << bit);
prefix_xor[i + 1] = curr;
}
for (int i = 1; i <= n; i++)
{
curr_xor ^= prefix_xor[i];
if (curr_xor == k)
ans = min(ans, i);
if (m[curr_xor ^ k])
ans = min(ans, i - m[curr_xor ^ k]);
m[curr_xor] = i;
}
return ans;
}
void mainSolve()
{
ll k;
cin >> n >> k;
v.clear();
v.resize(n);
for (int i = 0; i < n; i++)
cin >> v[i];
int ans = solve(0, k);
for (int bit = 30; bit >= 0; bit--)
{
if ((k >> bit) & 1)
continue;
ll curr_k = (((k >> bit) | 1) << bit);
ans = min(ans, solve(bit, curr_k));
}
if (ans == (n + 1))
ans = -1;
cout << ans << endl;
}
int main()
{
#ifndef ONLINE_JUDGE
freopen("input.txt", "r", stdin);
freopen("output.txt", "w", stdout);
#endif
int t;
cin >> t;
while (t--)
{
mainSolve();
}
return 0;
}