#include <iostream>
#include <cstring>
#define root 0
#define k s[i] - 'a' + 1
using namespace std;
constexpr int N = 1e6 + 5;
int n;
char s[N];
int nxt[N];
int w[N], f[N][30], cnt;
inline int getFail(int fa, int x) {
int p = nxt[fa];
if (f[p][x])
return f[p][x];
return 0;
}
inline void insert(char *s) {
int p = 0, len = strlen(s);
for (int i = 0; i < len; ++i) {
if (!f[p][k])
f[p][k] = ++cnt;
int last = p;
p = f[p][k];
nxt[p] = getFail(last, k);
}
++w[p];
}
inline int solve(char *s) {
int p = 0, ans = 0, len = strlen(s);
for (int i = 0; i < len; ++i) {
p = f[p][k];
int tmp = p;
while (tmp != root && w[tmp] != -1) {
ans += w[tmp];
w[tmp] = -1;
tmp = nxt[tmp];
}
}
return ans;
}
signed main() {
cin >> n;
while (n--) {
cin >> s;
insert(s);
}
cin >> s;
cout << solve(s);
return 0;
}