#include<bits/stdc++.h>
using namespace std;
int main(){
  int64_t N;
  cin >> N;
  vector<int64_t> vec(N);
  map<int64_t,int64_t> mp;
  for(int i=0; i<N; i++){
    cin >> vec[i];
    bitset<30> b(vec[i]);
    for(int j=0; j<30; j++){
      if(b.test(j)){
        mp[j]++;
        break;
      }
    }
  }
  
  int64_t sum = 0;
  for(int i=0; i<N; i++){
    sum ^= vec[i];
  }
  
  bool flag = true;
  int64_t ans = 0;
  
  bitset<30> B(sum);
  for(int i=29; i>=0; i--){
    if(B.test(i)){
      if(mp.count(i)){
        ans++;
        for(int j=0; j<=i; j++){
          B.flip(j);
        }
      }
      else{
        flag = false;
      }
    }
  }
  
  if(!flag){
    cout << -1 << endl;
  }
  else{
    cout << ans << endl;
  }
          
}