#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);
    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<65; ++j) b[i][j]=false;
    for(int i=0; i<n; ++i) scanf("%I64d", &a[i]);
    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<33; ++j){
        long long t=0;
        long long xr=0;
        bool cnt=false;
        //printf("USO %d\n", j);
        for(int i=0; i<n; ++i){
            if(t>sol){
                cnt=true;
                break;
            }
            //printf("uso %d\n", i);
            if(b[i][j]){
                //printf("%d-ta cifra %d-tog broja je 1\n", j, i);
                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]){
                   // printf("ne mos oduzimat tebra, dodaj %I64d\n", sd[j]-a[i]);
                    mn=sd[j]-a[i];
            }
            t+=mn;
            xr^=(a[i]+mn);
            //printf("za %d-tu cifru %d-tog broja dodajem %I64d\n", j, 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("za %d je %I64d\n", j, sol);
    }
    printf("%I64d", sol);
    return 0;
}