#include using namespace std; using ll = long long; constexpr char newl = '\n'; int main() { cin.tie(nullptr); ios::sync_with_stdio(false); int n, q; cin >> n >> q; vector< vector > dp(2, vector(30, 0)); vector< vector > memo(2, vector(30, 0)); for (int i = 0; i < 30; i++) { memo[1][i] = (1LL << i); } vector a(n); for (int i = 0; i < n; i++) { cin >> a[i]; } string s; cin >> s; for (int i = 0; i < n; i++) { if (s[i] == '0') { for (int j = 0; j < 30; j++) { ll bit = (a[i] & (1LL << j)); for (int k = 0; k < 2; k++) { ll nex = (memo[k][j] & bit); dp[k][j] += memo[k][j] - nex; memo[k][j] = nex; } } } else { for (int j = 0; j < 30; j++) { ll bit = (a[i] & (1LL << j)); for (int k = 0; k < 2; k++) { ll nex = (memo[k][j] | bit); dp[k][j] += nex - memo[k][j]; memo[k][j] = nex; } } } } for (int i = 0; i < q; i++) { ll t; cin >> t; ll ans = 0; for (int j = 0; j < 30; j++) { ans += dp[t >> j & 1][j]; // cerr << dp[t >> j & 1][j] << " "; } cout << ans << newl; } return 0; }