#pragma GCC optimize("O3")
#pragma GCC optimize("unroll-loops")
#include <bits/stdc++.h>
using namespace std;
typedef long long ll;
typedef pair<int,int> pii;
const int mxn = pow(3,13);
int dp[mxn], memo[13];
void solve(){
int l,q; cin >> l >> q;
string s; cin >> s;
memo[0] = 1;
for(int i = 1; i < 13; i++)
memo[i] = memo[i-1]*3;
for(int mask = 0; mask < 1<<l; mask++){
for(int sub = 0; sub < 1<<l; sub++){
int num = 0;
for(int i = 0; i < l; i++){
if(sub&(1<<i)) num += 2*memo[i];
else num += ((mask>>i)&1)*memo[i];
}
dp[num] += s[mask]-'0';
}
}
for(int t = 0; t < q; t++){
cin >> s;
reverse(s.begin(),s.end());
int num = 0;
for(int i = 0; i < l; i++)
num += (s[i]=='?'?2:(int)s[i]-'0')*memo[i];
cout << dp[num] << '\n';
}
}
signed main(){
cin.tie(0)->sync_with_stdio(false);
int t = 1;
while(t--){solve();}
}