#include <bits/stdc++.h>

using namespace std;

int main()
{
    ios_base::sync_with_stdio(false);
    cin.tie(0);
    cout.tie(0);
    cerr.tie(0);

    //kucaj ovdekaj

    int n;

    cin >> n;

    long long int arr[n];
    //long long int destructible[n]; // ako zatreba

    for (int i = 0; i < n; i++){
        cin >> arr[i];
        //destructible[i] = arr[i];
    }

    int bit;
    int xorcina;
    int andcina;
    long long int bigxorcina;
    long long int bigandcina;
    bool xorcina_resen=false;
    bool andcina_resen=false;

    int indeks = -1;
    long long int mini = 1999999999999999999;
    long long int minimum;

    long long int najbolji[n];
    long long int preradjevina[n];

    int jeltrebaposlednjidasemenjazaandcina[62];
    int akotrebajelsmanjujemoildodajemo[62];
    //63 * 5 * 10^5
    long long int kolj = 1;
    bigandcina = arr[0];
    bigxorcina = arr[0];

    for (int i = i; i < n; i++){
        bigxorcina ^= arr[i];
        bigandcina &= arr[i];
    }

    for (int i = 0; i < 62 && (!andcina_resen || !xorcina_resen); i++){
        minimum = 0;

        for (int j = 0; j < n; j++ ){
            //idejica ovde stala jer je malo kompli- a da nije, samo damo prioritet ovim nizim slucajevima (pre no sto mnogo shiftujemo)
            bit = (arr[j] / kolj) % 2;

            if (j == 0){
                xorcina = bit;
                andcina = bit;
                if (bit == 0){

                    if (arr[j] < kolj*2){
                        minimum += kolj - (arr[j] % kolj);
                        preradjevina[j] = arr[j] + (kolj - (arr[j] % kolj));
                    }
                    else {
                        minimum += min(kolj - (arr[j] % kolj), arr[j] % kolj*2 + 1);
                        //if (j == n-1){
                        if (kolj - (arr[j] % kolj) > arr[j] % kolj*2 + 1){

                            preradjevina[j] = arr[j] - (arr[j] % kolj*2 + 1);
                        }
                        else {
                            preradjevina[j] = arr[j] + (kolj - (arr[j] % kolj));
                        }
                        //}
                    }

                }
                else {
                    preradjevina[j] = arr[j];
                }
                //cout << "usli smo u petlju sa " << "preradjevinom: " << preradjevina[j] << " - bit: " << bit << " (" << i+1 << " po redu)\n";
                //cout << "minimum: " << minimum << " - BIT POSLE OBRADE: " << (preradjevina[j] / kolj) % 2 << "\n";
            }
            else {
                xorcina^=bit;
                andcina&=bit;

                if (bit == 0){

                    if (arr[j] < kolj*2){
                        minimum += kolj - (arr[j] % kolj);
                        preradjevina[j] = arr[j] + (kolj - (arr[j] % kolj));
                    }
                    else {


                        minimum += min(kolj - (arr[j] % kolj), arr[j] % kolj*2 + 1);
                        //if (j == n-1){
                        if (kolj - (arr[j] % kolj) > arr[j] % kolj*2 + 1){

                            preradjevina[j] = arr[j] - (arr[j] % kolj*2 + 1);
                        }
                        else {
                            preradjevina[j] = arr[j] + (kolj - (arr[j] % kolj));
                        }
                        //}
                    }
                }
                else {
                    preradjevina[j] = arr[j];
                }
                //cout << "preradjevina: " << preradjevina[j] << " - bit: " << bit << " (" << i+1 << " po redu)\n";
                //cout << "minimum: " << minimum << " - BIT POSLE OBRADE: " << (preradjevina[j] / kolj) % 2 << "\n";
            }

            if (j == n-1){



                if (mini > minimum){
                    bigxorcina = preradjevina[0];

                    for (int g = 0; g < n; g++){
                        bigxorcina^=preradjevina[g];
                    }
                    if(bigxorcina == 0){
                        if (i == 0){
                            minimum+=2;
                        }
                        else {
                            minimum++;
                        }

                    }

                    mini = minimum;
                    indeks = i;
                    //cout << "novi min: ";
                    for (int m = 0; m < n; m++){
                        //cout << preradjevina[m] << " ";
                        najbolji[m] = preradjevina[m];
                    }

                }
            }

        }

        kolj *= 2;
    }

    if (andcina_resen){
        if (xorcina_resen){
            cout << 0;
        }
        else {
            cout << 1;
        }
    }
    else {
        //cout << "\n";

        cout << mini;
    }

    return 0;
}