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