#include <iostream>
#include <fstream>
#include <unordered_map>
#define MOD 666013
#define MOD1 100007
#define NMAX 10000002
#define CMAX 21
#define DMAX 50001
using namespace std;
ifstream in("abc2.in");
ofstream out("abc2.out");
char s[NMAX];
char q[CMAX],r[DMAX][CMAX];
int m1[MOD];
int x,a[NMAX],d1[DMAX],coresp[MOD+5],c,n,p,cuv,p1=1,p2=1,h1,h2,contor;
int verf(int i,int st,int dr)
{
for(int j=st;j<=dr;j++)
{
if(r[i][j-st]!=s[j])
{
return 0;
}
}
return 1;
}
int main()
{
in >> s;
for(n=0;s[n]!='\0';n++)
{
a[n] = s[n]-'a'+1;
}
while(in >> r[c])
{
for(cuv=0;r[c][cuv]!='\0';cuv++)
{
//cout << p << " ";
d1[c] = (d1[c]*3+(r[c][cuv]-'a'+1))%MOD;
}
coresp[d1[c]] = c+1;
c++;
}
for(int i=0;i<cuv;i++)
{
h1 = (h1*3 + a[i])%MOD;
p1 = (3*p1)%MOD;
}
p1 /=3;
int st,dr;
if(coresp[h1]>0)
{
dr = cuv-1;
st = dr-cuv+1;
contor+=verf(coresp[h1]-1,st,dr);
}
for(int i=cuv;i<n;i++)
{
h1 = ((h1-(h1/p1)*p1)*3+ a[i])%MOD;
if(coresp[h1]>0)
{
dr = i;
st = dr-cuv+1;
contor+=verf(coresp[h1]-1,st,dr);
}
}
out << contor;
return 0;
}