#include <stdio.h>
#include <math.h>
#include <string.h>
#include <algorithm>
using namespace std;
unsigned int cuvant_curent, x[60010], puteri[]={1,3,9,27,81,243,729,2187,6561,19683,59049,177147,531441,1594323,4782969,14348907,43046721,129140163,387420489,1162261467,3486784401};
int p, o, n, i, j, candidati, k, poz;
char text[11000000], man[42];
/*int cautbin(unsigned int val)
{
int i, step;
for (step = 1; step < n; step <<= 1);
for (i = 1; step; step >>= 1)
if (i + step < n && x[i + step] <= val)
i += step;
return i;
}
*/
inline int cautbin(int st, int dr)
{
int m;
for (; st <= dr; )
{
m = (st + dr) >> 1;
if (cuvant_curent == x[m])
return m;
if (cuvant_curent > x[m])
st = m + 1;
else
dr = m - 1;
}
return 0;/*/
if ((dr - st == 1) || (st == dr))
{
if (x[st] == cuvant_curent) return st;
else
if (x[dr] == cuvant_curent) return dr;
else
return 0;
}
else
{
int m = (st + dr) / 2;
if (cuvant_curent > x[m])
return cautbin(m + 1, dr);
else
if (cuvant_curent < x[m])
return cautbin(st, m - 1);
else
return m;
}*/
}
int main()
{
freopen ("abc2.in", "rt", stdin);
freopen ("abc2.out", "wt", stdout);
fgets(text, 10000010, stdin);
fgets(man, 32, stdin);
p = 1;
o = strlen(man) - 2;
n ++;
for (i = 0; i <= o; i ++)
{
x[n] += puteri[i] * (man[i] - 'a');
}
while (fgets(man, 21, stdin))
{
n ++;
for (i = 0; i <= o; i ++)
{
x[n] += puteri[i] * (man[i] - 'a');
}
}
sort(x + 1, x + n + 1);
for (i = 0; i <= o; i ++)
cuvant_curent += puteri[i] * (text[i] - 'a');
/*k = strlen(text) - 1;
for (; i <= k; i ++)
{
poz = cautbin(1, n);
if (poz)
candidati ++;
cuvant_curent = (cuvant_curent - (text[i - o - 1] - 'a')) / 3 + puteri[o] * (text[i] - 'a');
}
poz = cautbin(1, n);
if (poz)
candidati ++;*/
printf("%ld\n", candidati);
return 0;
}