int n,q,a[1d5],t[1d5];
string s;
ll y,z[30][2];

{
	rd(n,q,a(n),s,t(q));
	rep(i,30){
		rep(j,2){
			int v=j;
			rep(k,n){
				if( s[k]=='0' && !(a[k]&1<<i) && v ){
					v=0;
					z[i][j]+=1<<i;
				}
				if( s[k]=='1' && (a[k]&1<<i) && !v ){
					v=1;
					z[i][j]+=1<<i;
				}
			}
		}
	}
	rep(k,q){
		y=0;
		rep(i,30){
			y+=z[i][t[k]>>i&1];
		}
		wt(y);
	}
}