#include <bits/stdc++.h>
#pragma GCC optimize("03")
using namespace std;
const int MOD = 29317;
unordered_map<unsigned int, bool>x;
char s[10000005], c[25];
vector<long long>G[MOD + 5];
bool cauta(long long val) {
long long v1 = val % MOD;
for (auto it:G[v1])
if (it == val)
return 1;
return 0;
}
int main() {
freopen("abc2.in", "r", stdin);
freopen("abc2.out", "w", stdout);
scanf("%s", s);
int l = -1;
long long val = 0;
while(scanf("%s", c) != EOF) {
if (l == -1)
l = strlen(c);
val = 0;
for (int i = 0; i < l; ++i)
val = val * 3 + c[i] - 'a';
G[val % MOD].push_back(val);
}
int n = strlen(s), ans = 0;
val = 0;
long long p3 = 1;
for (int j = 0; j < l; ++j)
val = val * 3 + s[j] - 'a', p3 *= 3;
p3 /= 3;
for (int i = 0; i + l - 1 < n; ++i) {
ans += cauta(val);
val = val - (s[i] - 'a') * p3;
val *= 3;
val += s[i + l] - 'a';
}
printf("%d\n", ans);
return 0;
}