#include <bits/stdc++.h>
using namespace std;
const int inf = 0x3f3f3f3f;
int n, k, tot, root;
int ak[30];
int son[20000005][2], g[20000005];
long long ans;
void calc(int v, int *a) {
  memset(a, 0, 120);
  int i = 0;
  while (v) {
    a[i++] = v & 1;
    v >>= 1;
  }
  return;
}
int make_node() {
  ++tot;
  return tot;
}
int get_ans(int x, int d) {
  if (!son[x][d]) return 0;
  return g[son[x][d]];
}
int ax[30];
void update(int x) {
  int nd = root;
  g[root]++;
  for (int i = 30 - 1; i >= 0; i--) {
    if (!son[nd][ax[i]]) son[nd][ax[i]] = make_node();
    nd = son[nd][ax[i]];
    g[nd]++;
  }
  return;
}
void query(int x) {
  int nd = root;
  for (int i = 30 - 1; i >= 0; i--) {
    if (!ak[i]) {
      ans += get_ans(nd, ax[i] ^ 1);
      nd = son[nd][ax[i]];
    } else
      nd = son[nd][ax[i] ^ 1];
    if (!nd) return;
  }
  ans += g[nd];
  return;
}
int main() {
  int x, y = 0;
  scanf("%d %d", &n, &k);
  root = make_node();
  update(0);
  calc(k, ak);
  for (int i = 1; i <= n; i++) {
    scanf("%d", &x);
    y ^= x;
    calc(y, ax);
    query(y);
    update(y);
  }
  printf("%I64d\n", ans);
  return 0;
}
