#include <bits/stdc++.h>
using namespace std;
int v[50], rev[1 << 20], ans = 0;
inline int cal(int x) {
  if (x <= 1 << 16)
    return rev[x];
  else
    return rev[x >> 16] + 16;
}
void add(int x) {
  if (!x) return;
  int k = cal(x & (-x));
  while (v[k]) {
    x ^= v[k];
    if (!x) return;
    k = cal(x & (-x));
  }
  v[k] = x;
  ans++;
}
int main() {
  for (int i = 0; i <= 16; i++) rev[1 << i] = i;
  int n;
  cin >> n;
  int pre = 0;
  for (int i = 1; i <= n; i++) {
    int x;
    scanf("%d", &x);
    pre ^= x;
    add(pre);
  }
  if (!pre) {
    puts("-1");
    return 0;
  }
  cout << ans << endl;
  return 0;
}
