#include <bits/stdc++.h>
#pragma GCC optimize("O3")
using namespace std;
string s;
int lst[26], n;
vector<int> ans;
void init() {
  cin >> s;
  n = (int)s.length();
  memset(lst, -1, sizeof(lst));
}
void solve() {
  for (int i = 0; i < n; ++i) {
    lst[s[i] - 'a'] = i;
    vector<pair<int, int> > tmp;
    for (int j = 0; j < 26; ++j)
      if (lst[j] != -1) tmp.emplace_back(lst[j], j);
    sort(tmp.rbegin(), tmp.rend());
    int msk = 0;
    for (auto &j : tmp) {
      if (i + 1 != n && j.second == s[i + 1] - 'a') break;
      msk |= (1 << j.second);
      ans.push_back(msk);
    }
  }
  sort(ans.begin(), ans.end());
  int q;
  cin >> q;
  while (q--) {
    cin >> s;
    int msk = 0;
    for (auto i : s) msk |= (1 << (i - 'a'));
    cout << upper_bound(ans.begin(), ans.end(), msk) -
                lower_bound(ans.begin(), ans.end(), msk)
         << '\n';
  }
}
int main() {
  ios_base::sync_with_stdio(0), cin.tie(0);
  init();
  solve();
}
