//   @author - Archit


#include<bits/stdc++.h>
using namespace std;


#define pb push_back
#define mp make_pair
#define ll long long
#define pll pair<ll,ll> 
#define all(v) v.begin(),v.end()
#define vll vector<ll> 
#define vvll vector<vll >
#define fast ios_base::sync_with_stdio(false);cin.tie(NULL);
#define ff first
#define ss second 
#define rjust(x) cout << std::right << std::setw(5) << x<<;
#define precise(x,y) cout<<std::fixed << std::setprecision(y) << x;
#define INF 1000000000000000

//INPUT
///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////

template<typename T>
void cres(vector<T>&Arr,int n)
{
	Arr.clear();
	Arr.resize(n);
}


template<typename T>
void cres(vector<vector<T> >&Arr,int row ,int col)
{
	Arr.clear();
	Arr.resize(row,vector<T>(col));
}

template<typename T>
void read(int x , vector<T>&Arr)
{
	for(ll i=x ;i<Arr.size();++i)
		cin>>Arr[i];
}

template<typename T >
void read(int x , vector<vector<T> >&Arr)
{
	for(ll i=x ;i<Arr.size();++i)
		{
			for(ll j=x ;j<Arr[i].size();++j)
				cin>>Arr[i][j];
		}
}

template<typename T >
void readg(vector<vector<T> >&Arr , int e)
{
	for(ll i=1 ;i<=e;++i)
		{
			ll x,y;
			cin>>x>>y;
			Arr[x].pb(y);
			Arr[y].pb(x);

		}
}

template<typename T>
void read(int x , T Arr[], int n)
{
	for(ll i=x ;i<n;++i)
		cin>>Arr[i];
}



//OUTPUT
///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////


template<typename T>
void write(int x , vector<T>&Arr)
{
	for(ll i=x ;i<Arr.size();++i)
		cout<<Arr[i]<<" ";
}

template<typename T>
void write(int x , vector<vector<T> >&Arr)
{
		for(ll i=x ;i<Arr.size();++i)
		{
			for(ll j=x ;j<Arr[i].size();++j)
				cout<<Arr[i][j]<< " ";
			cout<<"\n";
		}
}

template<typename T>
void write(int x , T Arr[], int n)
{
	for(ll i=x ;i<n;++i)
		cout<<Arr[i]<<" ";
}

template<typename T>
void write(set<T>&s)
{
	for(auto i : s) 
		cout<< i << " ";
}


template<typename T0, typename T1>
void write(map<T0,T1>&m)
{
	for(auto i : m) 
		cout<< i.ff << " " << i.ss<<"\n";
}



//FUNCTIONS
///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////

// const int sieve_size = 100005;
// int sieve[sieve_size];

// void Sieve()
// {
// 	sieve[0] = sieve[1] = -1;
	
// 	for(int i=2 ;i<sieve_size ;i++)
// 		sieve[i]=i;

// 	for(int i = 2 ;i*i<=sieve_size ;++i)
// 	{
// 		if(sieve[i]==i)
// 		{
// 			for(int j = i*i ; j<sieve_size;j+=i)
// 			{
// 				if(sieve[j]==j)
// 				sieve[j]=i;
// 			}
// 		}
// 	}
// }

ll n,k;
vll v;

int main()
{
	fast;

	cin>>n>>k;
	cres(v,n);
	read(0,v);

	vll binary_k;
	vvll binary_arr;
	cres(binary_arr , n);

	ll s =k ;
	while(s!=0)
	{
		binary_k.pb(s%2);
		s/=2;

	}
	while(binary_k.size()<=41)
	{
		binary_k.pb(0);
	}
	reverse(all(binary_k));

	for(ll i = 0 ; i<n ;i++)
	{
		ll s =v[i];
		while(s!=0)
		{
		binary_arr[i].pb(s%2);
		s/=2;
		}
		while(binary_arr[i].size()<=41)
		{
		binary_arr[i].pb(0);
		}
		reverse(all(binary_arr[i]));
	}
	// cout<<"binary_k\n"; 
	// write(0,binary_k);
	// cout<<"\n";
	// for(int i = 0 ; i< n ;i++)
	// {
	// 	write(0,binary_arr[i]);
	// 	cout<<"\n";
	// }
	vll cnt0(42),cnt1(42);
	for(ll i = 0 ; i<42 ;i++)
	{
		ll a=0,b=0;
		for(ll j = 0 ; j<n ;j++)
		{
			if(binary_arr[j][i]==0)
				a++;
			else
				b++;
		}
		cnt0[i] = a;
		cnt1[i] = b;
	}
	// write(0,cnt0);
	// cout<<"\n";
	// write(0,cnt1);	

	ll first_one = -1;
	for(ll i = 0 ; i<binary_k.size() ;i++)
	{
		if(binary_k[i] == 1)
			{
				first_one = i;
				break;
			}
	}
	if(first_one == -1)
	{
		ll  ans = 0 ;
		for(auto i : v)
			ans+=i;
		cout<<ans<<"\n";
	}
	else
	{

		vll number(42);
		
		for(int i = 0 ; i<first_one ;i++)
		number[i] = 0;
		// cout<<"\nfirst\n"<<first_one<<"\n";
		// cout<<"\nnumber\n";
		// //write(0,number);
		bool chota = false;

		for(int i = first_one ; i<number.size() ; i++)
		{
			if(cnt0[i]>cnt1[i])
			{
				if(binary_k[i] == 1)
				{
					number[i] = 1;
				}
				else
				{
					if(!chota)
					{
						number[i] = 0;
					}
					else
					{
						number[i] = 1;
					}
				}
			}
			else
			{
				number[i] = 0;
				if(binary_k[i] == 1)
					chota = true;
			}
		} 

		// write(0,number);
		ll value = 0 , powe = 41;
		for(int i = 0 ; i<number.size() ; i++)
		{
			//cout<<number[i]<<" "<<(1LL<<41)<<"\n";
			value+=number[i]*(1LL<<powe);
			powe--;
		}
		//cout<<"value "<<value<<"\n";
		ll final=0;
		for(int i = 0 ; i < n ; i++)
			final+=(value^v[i]);
		cout<<final<<"\n";

	}

	

















	return 0;
	
}




Measured memory_bytes: 54912