#include <iostream>
#include <stdio.h>

using namespace std;

long long a[1000000],s2[100];
int mat[500001][61];
long long potrebno[61];

int main()
{
    int okej=0; ///okej je ako nakon menjanja postoji kolona u kojoj ima i nula i jedinica sto je ekvivalentno sa potrebno[j] != s2[j]*n=0
    int n;
    int i,j;
    int xorr,andd;
    int maxst=0;
    long long pom;
    int iz,indexIz;
    scanf("%d",&n);
    scanf("%d",&a[0]);
    xorr = a[0];
    andd = a[0];

    s2[0] = 1;
    for (i=1;i<=61;i++){
        s2[i] = s2[i-1] * 2;
    }

    for (j=0;j<=60;j++){
            pom = a[0];
            if (pom % s2[j+1] != pom % s2[j]){
                mat[0][j] = 1;
                if (j > maxst)
                    maxst = j;
            }

    }


    for(i=1;i<n;i++){
        scanf("%lld",&a[i]);
        xorr = xorr ^ a[i];
        andd = andd & a[i];
        for (j=0;j<=60;j++){
            pom = a[i];
            if (pom % s2[j+1] != pom % s2[j]){
                mat[i][j] = 1;
                if (j > maxst)
                    maxst = j;
            }
        }
    }
    //cout << maxst << endl;
    /*for(i=0;i<n;i++){
        for (j=0;j<=maxst;j++){
            cout << mat[i][j] << " ";
        }
        cout << endl;
    }*/

    for (j=0;j<=maxst;j++){
        for (i=0;i<n;i++)
            if(mat[i][j] == 0)
                potrebno[j]++;
        potrebno[j] *= s2[j];
    }
    /*for(j=0;j<=maxst;j++)
        cout << potrebno[j] << " ";*/
    if ((xorr > 0) && (andd > 0))
        cout << 0;
    else {
        iz = potrebno[0];
        indexIz = 0;
        for (j=0;j<=maxst;j++){
            if (potrebno[j] < iz){
                iz = potrebno[j];
                indexIz = j;
            }
        }
        for (j=0;j<=maxst;j++){
            if (j!=indexIz){
                if((potrebno[j]!=0) && (potrebno[j]!=n*s2[j]))
                    okej = 1;
            }
        }
        if(okej == 0)
            iz++;
        cout << iz;
    }

    return 0;
}