#include <bits/stdc++.h>
#define MAXN 500007
using namespace std;
long long st[61];
long long a[MAXN],b[MAXN];
int main()
{
    int n;
    scanf("%d",&n);
    st[0]=1; for(int i=1;i<=60;i++) st[i]=st[i-1]*2;
    for(int i=0;i<n;i++) scanf("%lld",&a[i]);
    long long an=a[0],xo=a[0];
    for(int i=1;i<n;i++) {an&=a[i]; xo^=a[i];}
    if(an>0 && xo>0) {printf("0"); return 0;}
    if(an>1) {printf("1"); return 0;}
    long long res=4000000000000000000LL;
    for(int j=1;j<=40;j++)
    {
        long long tres=0;
        for(int i=0;i<n;i++)
        {
            long long x=a[i]%st[j+1];
            if(a[i]&st[j]) {b[i]=a[i]; continue;}
            if(x>=st[j-1] || a[i]<st[j]) b[i]=a[i]+(st[j]-x);
            else b[i]=a[i]-x-1;
        }
        for(int i=0;i<n;i++) printf("%lld ",b[i]);
        long long xr=0;
        for(int i=0;i<n;i++) {tres+=abs(b[i]-a[i]); if(tres<0) tres=4000000000000000000LL; xr^=b[i];}
        if(xr==0) tres++;
        printf("\n%lld %lld %lld\n",st[j],tres,xr);
        res=min(res,tres);
    }
    if(an==1) res=min(res,2LL);
    else
    {
        long long tres2=0;
        bool sn=true;
        for(int i=0;i<n;i++)
        {
            if(a[i]%2==0)
            {
                tres2++;
                if(a[i]!=0) sn=false;
                b[i]=a[i]+1;
            }
            else b[i]=a[i];
        }
        long long xr=0;
        for(int i=0;i<n;i++) xr^=b[i];
        if(xr==0 && sn) tres2+=2;
        res=min(res,tres2);
    }
    printf("%lld",res);
    return 0;
}