#include<bits/stdc++.h>
using namespace std;
long long a[500005];
bool b[500005][70];
long long sd[65];
int main(){
    int n;
    scanf("%d", &n);
    long long xr=0, ad=0;
    for(int i=0; i<n; ++i) {
            scanf("%I64d", &a[i]);
            if(i==0) ad=a[0];
            ad&=a[i];
            xr^=a[i];
    }
    if(xr!=0 && ad!=0){
        printf("0");
        return 0;
    }
    sd[0]=1;
    for(int i=1; i<64;++i) sd[i]=2*sd[i-1];
    for(int i=0; i<n; ++i) for(int j=0; j<64; ++j) b[i][j]=false;
    for(int i=0; i<n; ++i) for(int j=0; j<64; ++j) b[i][j]=a[i]&(1<<j);
    long long sol=1000000000000000001;
    for(int j=0; j<64; ++j){
        long long t=0;
        long long xr=0;
        bool cnt=false;
        for(int i=0; i<n; ++i){
            if(t>sol){
                cnt=true;
                break;
            }
            if(b[i][j]){
                xr^=a[i];
                continue;
            }
            long long mn=sd[j]-(a[i]%sd[j])<a[i]%sd[j]+1 ? sd[j]-(a[i]%sd[j]) :a[i]%sd[j]+1;
            if(a[i]<sd[j]) mn=sd[j]-a[i];
            t+=mn;
            xr^=(a[i]+mn);
        }
        if(cnt) continue;
        if(j!=0) sol=min(t+(xr==0? 1: 0), sol);
        else sol=min(t+(xr==0? 2: 0), sol);
    }
    printf("%I64d", sol);
    return 0;
}