#include <bits/stdc++.h>
#define maxN 500005

using namespace std;

long long a[maxN],n,i,j,ans,tmp,res,p[40];

long long dis(long long x,long long y){
long long tmp=p[y+1],pom=x;
x%=tmp;
tmp/=2;
if(x>=tmp) return 0;
if(tmp-x<x+1 || pom<=x) return tmp-x;
else return -(x+1);
}

int main()
{
    p[0]=1;
    for(i=1;i<40;i++) p[i]=2*p[i-1];
    ans=LLONG_MAX;
    cin>>n;
    for(i=0;i<n;i++) cin>>a[i];
    for(j=1;j<32;j++){
        res=0;
        int pom=0;
        for(i=0;i<n;i++){
            tmp=dis(a[i],j);
            res+=abs(tmp);
            pom^=(a[i]+tmp);
        }
        if(pom==0) res++;
        ans=min(ans,res);
    }
    bool b=false;
    int pom=0;
    res=0;
    for(i=0;i<n;i++){
        if(a[i]==0) {res++; a[i]++;}
    }
    for(i=0;i<n;i++){
        if(a[i]%2) {pom^=a[i]; continue;}
        res++;
        b=true;
    }
    if(b || pom) ans=min(ans,res);
    else{
        ans=min(ans,res+2);
    }
    cout<<ans<<endl;
    return 0;
}