#include <bits/stdc++.h>
using namespace std;
const int maxn = 2e7 + 5;
int num[maxn], tot = 1, d[maxn][2], n, k;
void update(int x) {
  int u = 1;
  for (int i = 30; i >= 0; i--) {
    int p = (x >> i) & 1;
    if (d[u][p] == 0) d[u][p] = ++tot;
    u = d[u][p];
    num[u]++;
  }
}
int query(int x) {
  int u = 1, cnt = 0;
  for (int i = 30; i >= 0; i--) {
    int p = (x >> i) & 1;
    int q = (k >> i) & 1;
    if (q == 0) {
      cnt += num[d[u][p ^ 1]];
      u = d[u][p];
    } else
      u = d[u][p ^ 1];
  }
  return cnt + num[u];
}
int main() {
  scanf("%d%d", &n, &k);
  int pre = 0;
  long long ans = 0;
  for (int i = 1; i <= n; i++) {
    update(pre);
    int x;
    scanf("%d", &x);
    pre ^= x;
    ans += query(pre);
  }
  cout << ans << endl;
}
