#include <bits/stdc++.h>
using namespace std;
const int sz = 31;
struct Gauss {
  int table[sz];
  Gauss() {
    for (int i = 0; i < sz; i++) table[i] = 0;
  }
  void add(int x) {
    for (int i = sz - 1; i >= 0 && x; i--) {
      if (!table[i]) {
        table[i] = x;
        x = 0;
      } else
        x = min(x, x ^ table[i]);
    }
  }
  int rank() {
    int ans = 0;
    for (int i = sz - 1; i >= 0; i--) {
      if (table[i]) ans++;
    }
    return ans;
  }
  int minxor(int k) {
    int x = k;
    for (int i = sz - 1; i >= 0; i--) x = min(x, x ^ table[i]);
    return x;
  }
  int maxxor(int k) {
    int x = k;
    for (int i = sz - 1; i >= 0; i--) x = max(x, x ^ table[i]);
    return x;
  }
} mat;
int main() {
  int n;
  scanf("%d", &n);
  int pxor = 0;
  for (int i = 0; i < n; i++) {
    int x;
    scanf("%d", &x);
    mat.add(x ^ pxor);
    pxor ^= x;
  }
  if (pxor)
    cout << mat.rank();
  else
    cout << -1;
}
