#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; }