#include <bits/stdc++.h>
using namespace std;
template <class T>
T abs(T x) {
  return x > 0 ? x : -x;
}
template <class T>
T gcd(T a, T b) {
  return a ? gcd(b % a, a) : b;
}
template <class T>
T lcm(T a, T b) {
  return gcd(a, b) ? (a / gcd(a, b) * b) : 0;
}
template <class T>
T sqr(T a) {
  return a * a;
}
template <class T>
T sgn(T a) {
  return a > 0 ? 1 : (a < 0 ? -1 : 0);
}
long long n, m, k, ans, sum, cur;
map<long long, long long> ma;
signed main() {
  ios::sync_with_stdio(0);
  cin.tie(0);
  cout.tie(0);
  cin >> n >> k;
  k = (1 << k) - 1;
  long long q = 0;
  ma[0]++;
  for (long long i = 0; i < (n); i++) {
    long long x;
    cin >> x;
    q ^= x;
    if (q & 1) q ^= k;
    ma[q]++;
  }
  ans = n * (n + 1) / 2;
  for (auto o : ma) {
    long long x = o.second / 2;
    long long y = o.second - x;
    ans -= x * (x - 1) / 2;
    ans -= y * (y - 1) / 2;
  }
  cout << ans << '\n';
}
