#include <bits/stdc++.h>
using namespace std;
#define int long long
#define all(x) x.begin(), x.end()
const int N = 1e6 + 5;
#define ff(s) [s[0] - '0' + 1][s[1] - '0' + 1][s[2] - '0'+ 1][s[3] - '0'+ 1][s[4] - '0'+ 1][s[5] - '0'+ 1]
 int n , m;
 int pi[11][11][11][11][11][11];
void solve(int tc){
    cin >> n;
    
    memset(pi,0,sizeof(pi));
    
    for(int i = 0; i < n; i++) {
        string s; cin >> s;
        int x; cin >> x;
        pi [s[0] - '0' + 1][s[1] - '0' + 1][s[2] - '0'+ 1][s[3] - '0'+ 1][s[4] - '0'+ 1][s[5] - '0'+ 1] += x;
    }
    
    for(int i = 1; i <= 10; i++) {
        for(int j = 1; j <= 10; j++) {
            for(int k = 1; k <= 10; k++){
                for(int p = 1; p <= 10 ; p++) {
                    for(int q = 1; q <= 10; q++) {
                        for(int r = 1; r <= 10; r++) {
                            for(int mask = 1; mask < 64; mask++){
                                int cnt = __builtin_popcount(mask);
                                vector<int> offset(6);
                                for(int bit = 0; bit < 6; bit++)
                                    offset[bit] = (mask & (1LL<<bit)) > 0;
                                if(cnt&1LL)
                                    pi[i][j][k][p][q][r] += pi[i - offset[0] ][j- offset[1]][k - offset[2]][p - offset[3]][q - offset[4]][r - offset[5]];
                                else
                                    pi[i][j][k][p][q][r] -= pi[i - offset[0] ][j- offset[1]][k - offset[2]][p - offset[3]][q - offset[4]][r - offset[5]];
                            }
                        }
                    }
                }
            }
        }
    }
    // return;
    cin >> m;
    while(m--) {
        string x, y; cin >> x >> y;
        // continue;
        vector<int> low(6), high(6), d(6);
        for(int i = 0; i < 6; i++)
            low[i] = min(x[i]- '0', y[i] - '0'), high[i] = max(x[i]- '0', y[i] - '0');
        for(int i = 0; i < 6; i++)
            d[i] = high[i] - low[i];
        int i = high[0] + 1;
        int j = high[1]+ 1;
        int k = high[2]+ 1;
        int p = high[3]+ 1;
        int q = high[4]+ 1;
        int r = high[5]+ 1;
        int sum = pi[i][j][k][p][q][r];
        for(int mask = 1; mask < 64; mask++){
            int cnt = __builtin_popcount(mask);
            vector<int> offset(6);
            for(int bit = 0; bit < 6; bit++)
                offset[bit] = ((mask & (1LL<<bit)) > 0) * d[bit];
            if(cnt&1LL)
                sum += pi[i - offset[0] ][j- offset[1]][k - offset[2]][p - offset[3]][q - offset[4]][r - offset[5]];
            else
                sum -= pi[i - offset[0] ][j- offset[1]][k - offset[2]][p - offset[3]][q - offset[4]][r - offset[5]];
        }
        cout << sum << endl;
    }
}
 
signed main() {
    ios::sync_with_stdio(false);
    cin.tie(NULL);
    int t = 1;
    // cin >> t;
    for(int i = 1; i <= t; i++){
        solve(i);
    }
    return 0;
}