#include <cstdio>
#include <algorithm>
#include <vector>
#include <iostream>
#include <cmath>
#include <map>
#include <set>
#include <cassert>
#include <queue>
using namespace std;

#define rank XBOCT4
#define right solo322
#define y1 dread1
#define left hohohaha

const double PI = acos(-1.0);
const int MD = 1000000000 + 7;

long long s[100333][26];
long long size[100333];
string st;
int n = 0;

long long count(long long p, int c) {
    if (p == 0 || n == 0) {
        return 0;
    }
    int l = 0, r = n;
    while (l + 1 < r) {
        int m = (l + r) / 2;
        if (size[m] >= p) {
            r = m;
        } else {
            l = m;
        }
    }
   // cerr << s[r][c] << endl;
    if (size[r] == p) {
        return s[r][c];
    }
    return (s[r - 1][c] * (p / size[r - 1])) + count(p % size[r - 1], c);
}

int main() {
    ios_base::sync_with_stdio(false);
    cin >> st;
    for (int i = 1; i <= st.size(); i++) {
        if (st[i - 1] >= '0' && st[i - 1] <= '9') {
            size[i] = size[i - 1] * (st[i - 1] - '0');
            for (int j = 0; j < 26; j++) {
                s[i][j] = s[i - 1][j] * (st[i - 1] - '0');
            }
        } else {
            size[i] = size[i - 1] + 1;
            for (int j = 0; j < 26; j++) {
                s[i][j] = s[i - 1][j];
            }
            s[i][st[i - 1] - 'a']++;
        }
        if (size[i] < size[i - 1]) {
            break;
        }
        n = i;
    }
    int q;
   // scanf("%d\n", &q);
    cin >> q;
    for (int i = 0; i < q; i++) {
        char c;
        long long l, r;
        //scanf("%c %lld %lld", &c, &l, &r);
        cin >> c >> l >> r;
      //  cerr << c << " " << l << " " << r << endl;
        c -= 'a';
        cout << count(r, c) - count(l - 1, c) << "\n";
    }
    return 0;
}