#include <bits/stdc++.h>
using namespace std;
const long double Eps = 1e-9;
const long long M = 998244353;
bool Cut(vector<int> &a, int k, int s) {
  for (int i = int(s); i < int(a.size()); i++)
    if (a[i] & (1 << k)) {
      swap(a[i], a[s]);
      break;
    }
  if (!(a[s] & (1 << k))) return 0;
  for (int i = int(s + 1); i < int(a.size()); i++)
    if (a[i] & (1 << k)) a[i] ^= a[s];
  return 1;
}
int GetRank(vector<int> &a) {
  int k = 0;
  int r = 0;
  for (int i = 0; i < int(a.size()); i++) {
    while (k < 31 && !Cut(a, k, i)) k++;
    if (k == 31) return r;
    r++;
  }
  return r;
}
bool Test(vector<int> a, int first) {
  a.push_back(first);
  return (GetRank(a) == a.size());
}
int main() {
  ios_base::sync_with_stdio(false);
  cin.tie(nullptr);
  cout.tie(nullptr);
  int n;
  cin >> n;
  vector<int> a(n);
  int s = 0;
  for (int i = 0; i < int(n); i++) {
    cin >> a[i];
    s ^= a[i];
  }
  if (!s) {
    cout << -1 << endl;
    return 0;
  }
  vector<int> b;
  for (int i = 0; i < int(n); i++) {
    if (Test(b, a[i])) b.push_back(a[i]);
  }
  cout << b.size() << endl;
}
