#include <bits/stdc++.h>
const int MOD = 2012;
using namespace std;
const int Max = 1e6 + 5;
int pa[Max << 1], son[Max << 1][27];
int deep[Max << 1], sum[Max << 1], tp[Max << 1], S[Max << 1], arr[Max << 1],
    cnt, root, last;
char str[Max];
inline int Newnode(int _deep) {
  deep[++cnt] = _deep;
  return cnt;
}
inline void SAM(int alp) {
  int np = Newnode(deep[last] + 1);
  int u = last;
  S[np] = 1;
  memset(son[np], 0, sizeof(son[np]));
  while (u && !son[u][alp]) son[u][alp] = np, u = pa[u];
  if (!u)
    pa[np] = root;
  else {
    int v = son[u][alp];
    if (deep[v] == deep[u] + 1)
      pa[np] = v;
    else {
      int nv = Newnode(deep[u] + 1);
      memcpy(son[nv], son[v], sizeof(son[v]));
      pa[nv] = pa[v], pa[v] = pa[np] = nv;
      while (u && son[u][alp] == v) son[u][alp] = nv, u = pa[u];
    }
  }
  last = np;
}
inline void toposort() {
  for (int i = 1; i <= deep[last]; i++) sum[i] = 0;
  for (int i = 1; i <= cnt; i++) sum[deep[i]]++;
  for (int i = 1; i <= deep[last]; i++) sum[i] += sum[i - 1];
  for (int i = 1; i <= cnt; i++) tp[sum[deep[i]]--] = i;
  for (int i = cnt; i >= 1; i--) S[pa[tp[i]]] += S[tp[i]];
}
inline void pre() { root = last = Newnode(0); }
bool vis[Max << 1];
int id[Max << 1], lenid;
void solve(char *pat) {
  int len = strlen(pat);
  int ans = 0;
  for (int l = 0, a = 0, root = 1; a < len; a++) {
    if (son[root][pat[a] - 'a']) {
      root = son[root][pat[a] - 'a'];
      l++;
      if (l == (len + 1) / 2) {
        if (!vis[root]) ans += S[root], vis[root] = 1, id[lenid++] = root;
        if (deep[pa[root]] == l - 1) root = pa[root];
        l--;
      }
    } else {
      if (root == 1) continue;
      root = pa[root];
      l = deep[root];
      a--;
    }
  }
  printf("%d\n", ans);
  for (int a = 0; a < lenid; a++) {
    vis[id[a]] = false;
  }
  lenid = 0;
}
int main() {
  int n;
  scanf("%s", str);
  pre();
  int len = strlen(str);
  for (int a = 0; a < len; a++) SAM(str[a] - 'a');
  toposort();
  scanf("%d", &n);
  for (int a = 0; a < n; a++) {
    scanf("%s", str);
    len = strlen(str);
    for (int b = 0; b < len; b++) str[b + len] = str[b];
    str[len + len - 1] = 0;
    solve(str);
  }
  return 0;
}
