Cod sursa(job #99616)
#include<stdio.h>
#include<string.h>
#define N 10000000
char d[N],s[N],a[50000][20];
int poz[3][N],k,lg,l,nr;
int gasit(char s[])
{
int i;
for(i=0;i<k;i++)
if(strcmp(a[i],s)==0)
return 1;
return 0;
}
int search(int st,char s[])
{
int i;
if(s[l-1]!=d[st+l-1])
return 0;
for(i=0;i<l;i++)
if(s[i]!=d[st+i])
return 0;
return 1;
}
void read()
{
scanf("%s",&d);
while(scanf("%s",&s)!=EOF)
if(!gasit(s))
strcpy(a[k++],s);
lg=strlen(d);
l=strlen(s);
}
void solve()
{
int i,q;
for(i=0;i<lg;i++)
poz[d[i]-'a'][++poz[d[i]-'a'][0]]=i;
/*for(i=0;i<3;i++){
for(j=1;j<=poz[i][0];j++)
printf("%d ",poz[i][j]+1);
printf("\n");
}*/
for(i=0;i<k;i++)
for(q=1;q<=poz[a[i][0]-'a'][0];q++)
if(search(poz[a[i][0]-'a'][q],a[i]))
nr++;
printf("%d\n",nr);
}
int main()
{
freopen("abc2.in","r",stdin);
freopen("abc2.out","w",stdout);
read();
solve();
return 0;
}