using System; using static System.Console; using System.Linq; using System.Collections.Generic; class Program { static int NN => int.Parse(ReadLine()); static int[] NList => ReadLine().Split().Select(int.Parse).ToArray(); static int[][] NArr(long n) => Enumerable.Repeat(0, (int)n).Select(_ => NList).ToArray(); public static void Main() { Solve(); } static void Solve() { var c = NList; var (n, q) = (c[0], c[1]); var a = NList; var s = ReadLine(); var t = NList; var l = 30; var m0 = new long[l]; var m1 = new long[l]; for (var b = 0; b < l; ++b) { var v0 = 0; var v1 = 1; for (var i = 0; i < n; ++i) { var nv0 = s[i] == '0' ? (v0 & (a[i] >> b)) : ((v0 | (a[i] >> b)) & 1); var nv1 = s[i] == '0' ? (v1 & (a[i] >> b)) : ((v1 | (a[i] >> b)) & 1); if (v0 != nv0) ++m0[b]; if (v1 != nv1) ++m1[b]; v0 = nv0; v1 = nv1; } } var ans = new long[q]; for (var b = 0; b < l; ++b) { for (var i = 0; i < q; ++i) { ans[i] += (((t[i] >> b) & 1) == 0 ? m0[b] : m1[b]) << b; } } WriteLine(string.Join("\n", ans)); } }