#include <bits/stdc++.h>
using namespace std;

const int N = 1 << 18;
int t[4 * N];
string st;
int k;

void build(int v, int tl, int tr) {
    if (tl == tr) {
        if (st[v - 1] == '?') {
            t[v] = 2;
        }else t[v] = 1;
        //cout << v << "->" << t[v] << '\n';
        return;
    }
    int m = (tl + tr) >> 1;
    build (v << 1, tl, m);
    build((v << 1) + 1, m + 1, tr);
    if (st[v - 1] == '?')
        t[v] = t[v << 1] + t[(v << 1) + 1];
    else if (st[v - 1] == '0')
        t[v] = t[v << 1];
    else t[v] = t[(v << 1) + 1];
    //cout << v << "->" << t[v] << '\n';
}

void update(int v, int p, int bit, int bcnt, char x, int tl, int tr) {
    if (v == p) {
        st[v - 1] = x;
        if (tl == tr) {
            if (st[v - 1] == '?')
                t[v] = 2;
            else t[v] = 1;
        }else if (st[v - 1] == '?')
            t[v] = t[v << 1] + t[(v << 1) + 1];
        else if (st[v - 1] == '0')
            t[v] = t[v << 1];
        else t[v] = t[(v << 1) + 1];
        //cout << x << " " << v << " " << t[v] << '\n';
        return;
    }
    int m = (tl + tr) >> 1;
    if (!(p & (1 << (bcnt - bit))))
        update(v << 1, p, bit + 1, bcnt, x, tl, m);
    else update((v << 1) + 1, p, bit + 1, bcnt, x, m + 1, tr);
    if (st[v - 1] == '?')
        t[v] = t[v << 1] + t[(v << 1) + 1];
    else if (st[v - 1] == '0')
        t[v] = t[v << 1];
    else t[v] = t[(v << 1) + 1];
}

int main(){
    cin >> k >> st;
    string sp;
    int S = st.size() - 1, cnt = 0, F = st.size(), pos = 0;
    while (cnt != k) {
        for (int i = S; i < F; i++) {
            sp.push_back(st[i]);
        }
        cnt++;
        F = S;
        S -= (1 << cnt);
    }
    st = sp;
    build(1, 1, 1 << (k - 1));
    int q;
    cin >> q;
    while (q--) {
        int p;
        char x;
        cin >> p >> x;
        for (int i = 0; i < k; i++) {
            if ((1 << k) - ((1 << (i + 1)) - 1) <= p) {
                int r = 0;
                if (i != 0) r = ((1 << i) - 1);
                p = p - ((1 << k) - ((1 << (i + 1)) - 1)) + r + 1;
                break;
            }
        }
        int bcnt = 0;
        for (int i = 1; i <= k + 1; i++) {
            if (p <= ((1 << i) - 1)) {
                bcnt = i - 1;
                break;
            }
        }
        update(1, p, 1, bcnt, x, 1, 1 << (k - 1));
        cout << t[1] << '\n';
    }
    return 0;
}