#include <bits/stdc++.h>
using namespace std;
int main() {
  ios_base::sync_with_stdio(false);
  string s;
  cin >> s;
  string t = s.substr(0, 1);
  int n;
  n = s.length();
  for (int i = 1; i < n; ++i) {
    if (s[i] == t.back()) {
      continue;
    }
    t += s[i];
  }
  s = t;
  n = s.length();
  int m;
  cin >> m;
  int mask[m];
  int arr[m];
  for (int i = 0; i < m; ++i) {
    string t;
    cin >> t;
    mask[i] = 0;
    for (char c : t) {
      mask[i] |= (1 << (c - 'a'));
    }
    arr[i] = mask[i];
  }
  sort(arr, arr + m);
  int szarr = unique(arr, arr + m) - arr;
  int ans[szarr];
  memset(ans, 0, sizeof(ans));
  int npos[26];
  for (int i = 0; i < 26; ++i) {
    npos[i] = n;
  }
  for (int i = n - 1; i >= 0; --i) {
    npos[s[i] - 'a'] = i;
    int ma = 0;
    int id[26];
    for (int j = 0; j < 26; ++j) {
      id[j] = j;
    }
    sort(id, id + 26, [&](int l, int r) { return npos[l] < npos[r]; });
    for (int j = 0; j < 26; ++j) {
      int ps = id[j];
      if (npos[ps] >= n) break;
      ma |= 1 << ps;
      if (i > 0 && (ma & (1 << (s[i - 1] - 'a')))) {
        break;
      }
      int anspos = lower_bound(arr, arr + szarr, ma) - arr;
      if (arr[anspos] == ma) {
        ans[anspos]++;
      }
    }
  }
  for (int i = 0; i < m; ++i) {
    int pos = lower_bound(arr, arr + szarr, mask[i]) - arr;
    cout << ans[pos] << "\n";
  }
  return 0;
}
