import sys sys.setrecursionlimit(10**7) def I(): return int(sys.stdin.readline().rstrip()) def MI(): return map(int,sys.stdin.readline().rstrip().split()) def LI(): return list(map(int,sys.stdin.readline().rstrip().split())) def LI2(): return list(map(int,sys.stdin.readline().rstrip())) def S(): return sys.stdin.readline().rstrip() def LS(): return list(sys.stdin.readline().rstrip().split()) def LS2(): return list(sys.stdin.readline().rstrip()) N,Q = MI() A = LI() S = S() T = LI() zero_start = [] one_start = [] for i in range(30): z,o = 0,1 score_zero,score_one = 0,0 for j in range(N): a = (A[j]>>i) & 1 s = S[j] if S[j] == '0': if z != z & a: score_zero += 1 if o != o & a: score_one += 1 z = z & a o = o & a else: if z != z | a: score_zero += 1 if o != o | a: score_one += 1 z = z | a o = o | a zero_start.append(score_zero<>i) & 1: ans += one_start[i] else: ans += zero_start[i] print(ans)