#include <bits/stdc++.h>
#define ll long long
using namespace std;
const int N=100000+5;
int n,m,a[N],b[N],tot;
ll ans,tmp1,tmp2,tmp;
inline int read(){
int cnt=0,f=1;char c=getchar();
while(!isdigit(c)){if(c=='-')f=-f;c=getchar();}
while(isdigit(c)){cnt=(cnt<<1)+(cnt<<3)+(c^48);c=getchar();}
return cnt*f;
}
inline ll cnt(ll num){
for(int i=1;i<=n;++i){
if(a[i]==1) num=num&b[i];
else if(a[i]==2) num=num|b[i];
else num=num^b[i];
}
return num;
}
signed main(){
freopen("sleep.in","r",stdin);
freopen("sleep.out","w",stdout);
n=read(),m=read();
char s[N];
for(int i=1;i<=n;++i){
scanf("%s",s+1);b[i]=read();
if(s[1]=='A') a[i]=1;
else if(s[1]=='O') a[i]=2;
else a[i]=3;
}
tmp1=cnt(0ll);
tmp=0,tot=0,ans=0;
do{
tmp=tmp<<1ll,tmp=tmp|1ll,++tot;
}while(tmp<m);
tmp2=cnt(tmp);
for(int i=tot-1;i>=0;--i) if((tmp1&(1ll<<i))==0&&(tmp2&(1ll<<i))==1&&((ans|(1ll<<i))<=m)) ans=ans|(1ll<<i);
cout<<cnt(ans)<<endl;
return 0;
}