#include <bits/stdc++.h>
using namespace std;
const int N = 2e6 + 5;
int c[N][26], fa[N], l[N], sz[N], np = 1, cnt = 1;
int a[N], b[N];
int q, len, vi[N];
char s[N];
void expend(int x) {
  int p = np;
  np = ++cnt;
  l[np] = l[p] + 1;
  sz[np] = 1;
  for (; p && !c[p][x]; p = fa[p]) c[p][x] = np;
  if (!p) {
    fa[np] = 1;
    return;
  }
  int q = c[p][x];
  if (l[q] == l[p] + 1) {
    fa[np] = q;
    return;
  }
  int nq = ++cnt;
  l[nq] = l[p] + 1;
  memcpy(c[nq], c[q], 104);
  fa[nq] = fa[q], fa[q] = fa[np] = nq;
  for (; c[p][x] == q; p = fa[p]) c[p][x] = nq;
}
void init() {
  for (int i = 1; i <= cnt; ++i) ++b[l[i]];
  for (int i = 1; i <= len; ++i) b[i] += b[i - 1];
  for (int i = cnt; i; --i) a[b[l[i]]--] = i;
  for (int i = cnt; i; --i) sz[fa[a[i]]] += sz[a[i]];
}
int walk() {
  int re = 0, u = 1, cur = 0;
  for (int i = 0; i < (len << 1); ++i) {
    int x = s[i] - 97;
    if (c[u][x])
      ++cur, u = c[u][x];
    else {
      while (u && !c[u][x]) u = fa[u];
      if (u)
        cur = l[u] + 1, u = c[u][x];
      else
        cur = 0, u = 1;
    }
    if (i >= len && cur >= len) {
      int p = u;
      while (p && !(len >= l[fa[p]] + 1 && len <= l[p])) p = fa[p];
      if (!p) p = 1;
      if (vi[p] != q + 1) vi[p] = q + 1, re += sz[p];
    }
  }
  return re;
}
int main() {
  scanf("%s%d", s, &q), len = strlen(s);
  for (int i = 0; i < len; ++i) expend(s[i] - 97);
  init();
  while (q--) {
    scanf("%s", s), len = strlen(s);
    memcpy(s + len, s, len);
    printf("%d\n", walk());
  }
}
