#include<cstdio>
#include<cstring>
#include<algorithm>
using namespace std;
struct E
{char c;
struct T *next;};
struct P
{int b;
char *a;};
struct T
{int f,d,mpn,od,ann;
T *fn,**an;
char **mp;
E *o;
T()
{memset(this,0,sizeof(T)),o=new E[4],
mp=new char*[101];}};
T *m,*r,*next,*thiz=new T();
int i,n,b[101],j,k,o[101],l,t,u;
char s[1000001],a[101][10001],c[101],*f[101];
P d[101];
int A(P c,P d)
{return c.a<d.a;}
T *find(T *thiz,char c)
{for(int i=0;i<thiz->od;i++)
if(thiz->o[i].c==c)
return thiz->o[i].next;
return NULL;}
int has(T *thiz,char c[])
{int i,j,k=strlen(c);
for(i=0;i<thiz->mpn;i++)
if(strlen(thiz->mp[i])==k)
for(j=0;j<k;j++)
if(thiz->mp[i][j]==c[j])
return 1;
return 0;}
void failure(T *thiz,T *node,char c[])
{for(int i=0,j,k;i<node->od;i++)
{c[node->d]=node->o[i].c;
T *r=node->o[i].next,*m;
if(!r->fn)
r->fn=thiz;
for(j=1;j<r->d;j++)
{m=thiz;
for(k=j;k<r->d&&m;m=find(m,c[k++]));
if(m)
{r->fn=m;
break;}}
failure(thiz,r,c);}}
int main()
{freopen("ahocorasick.in","r",stdin),freopen("ahocorasick.out","w",stdout);
gets(s),scanf("%d\n",&n);
thiz->an=new T*[10001],thiz->an[thiz->ann++]=thiz;
for(j=1;j<=n;j++)
{gets(a[j]),r=thiz;
for(i=1;i<j&&!o[j];i++)
if(!strcmp(a[j],a[i]))
o[j]=i;
if(!o[j])
{for(i=0;a[j][i];i++)
if((next=find(r,a[j][i])))
r=next;
else
next=new T(),r->o[r->od].c=a[j][i],r->o[r->od++].next=next,
next->d=r->d+1,thiz->an[thiz->ann++]=r=next;
if(!has(r,a[j]))
r->mp[r->mpn++]=a[j];
r->f=1;}}
failure(thiz,thiz,c);
for(i=1;i<=n;i++)
if(!o[i])
d[l].a=a[i],d[l++].b=i;
sort(d,d+l,A);
for(i=0;i<thiz->ann;i++)
for(m=thiz->an[i];(m=m->fn);)
{for(j=0;j<m->mpn;j++)
if(!has(thiz->an[i],m->mp[j]))
thiz->an[i]->mp[thiz->an[i]->mpn++]=m->mp[j];
if(m->f)
thiz->an[i]->f=1;}
while(s[k])
if(!(next=find(thiz,s[k])))
if(thiz->fn)
thiz=thiz->fn;
else
k++;
else
{thiz=next,k++;
if(thiz->f)
{sort(thiz->mp,thiz->mp+thiz->mpn);
for(u=j=0;j<thiz->mpn;u++,j=t)
for(f[u]=thiz->mp[j],t=j+1;f[u]==thiz->mp[t]&&t<thiz->mpn;t++);
for(i=j=0;i<l&&j<u;)
if(f[j]==d[i].a)
b[d[i].b]++,j++,i++;
else
if(f[j]<d[i].a)
j++;
else
i++;}}
for(i=1;i<=n;i++)
printf("%d\n",!o[i]?b[i]:b[o[i]]);
return 0;}