#include <bits/stdc++.h>
using namespace std;
#define ll long long
#define out(a) copy(a.begin(),a.end(),ostream_iterator<int>(cout, " "))
const int M = 1e9 + 7;
const int N = 17040;
const int BASE = 63LL;
vector<vector<pair<int, int> > > arr;
ll h, p;
int n, x, y, ln, cnt;
int len[N], val[128], out[N];
char s[N][80];
ll power(ll base, int exp) {
ll res = 1;
while (exp) {
if (exp & 1)
res = (res * base) % M;
exp >>= 1;
base = (base * base) % M;
}
return res;
}
ll MOD(ll x) {
return (x % M + M) % M;
}
void dfs(int x, int l = 0, int sum = 0) {
for (int i = 0; i < arr[x].size(); ++i) {
int y = arr[x][i].first, indx = arr[x][i].second;
out[l] = indx;
dfs(y, l + 1, sum + len[indx]);
}
if (arr[x].empty() && sum >= ln) {
ll tmp = 0;
int k = 0, curr = 0;
for (int i = 0; i < ln; ++i) {
char c = s[out[curr]][k];
tmp = ((tmp * BASE) % M + val[(int) c]) % M;
++k;
if (k == len[out[curr]])
curr++, k = 0;
}
cnt += (tmp == h);
int _k = 0, _curr = 0;
for (int i = 1; i < sum - ln + 1; ++i) {
char c = s[out[curr]][k];
char d = s[out[_curr]][_k];
tmp = MOD(tmp - (val[(int) d] * p) % M);
tmp = ((tmp * BASE) % M + val[(int) c]) % M;
cnt+=(h == tmp);
++k;
++_k;
if (k == len[out[curr]])
curr++, k = 0;
if (_k == len[out[_curr]])
_curr++, _k = 0;
}
}
}
int main() {
int id = 1;
for (int i = 'A'; i <= 'Z'; ++i)
val[i] = id++;
for (int i = 'a'; i <= 'z'; ++i)
val[i] = id++;
for (int i = '0'; i <= '9'; ++i)
val[i] = id++;
scanf("%d", &n);
arr.clear();
arr.resize(n);
for (int i = 0; i < n - 1; ++i) {
scanf("%d %d %s", &x, &y, s[i]);
len[i] = strlen(s[i]);
arr[x].push_back(make_pair(y, i));
}
char t[80];
scanf(" %s", t);
ln = strlen(t);
h = 0;
for (int i = 0; i < ln; ++i)
h = (h * BASE + val[(int) t[i]]) % M;
p = power(BASE, ln - 1);
dfs(0);
printf("%d\n",cnt);
return 0;
}
I2luY2x1ZGUgPGJpdHMvc3RkYysrLmg+CnVzaW5nIG5hbWVzcGFjZSBzdGQ7CiNkZWZpbmUgbGwgbG9uZyBsb25nCiNkZWZpbmUgb3V0KGEpIGNvcHkoYS5iZWdpbigpLGEuZW5kKCksb3N0cmVhbV9pdGVyYXRvcjxpbnQ+KGNvdXQsICIgIikpCmNvbnN0IGludCBNID0gMWU5ICsgNzsKY29uc3QgaW50IE4gPSAxNzA0MDsKY29uc3QgaW50IEJBU0UgPSA2M0xMOwp2ZWN0b3I8dmVjdG9yPHBhaXI8aW50LCBpbnQ+ID4gPiBhcnI7CmxsIGgsIHA7CmludCBuLCB4LCB5LCBsbiwgY250OwppbnQgbGVuW05dLCB2YWxbMTI4XSwgb3V0W05dOwpjaGFyIHNbTl1bODBdOwpsbCBwb3dlcihsbCBiYXNlLCBpbnQgZXhwKSB7CglsbCByZXMgPSAxOwoJd2hpbGUgKGV4cCkgewoJCWlmIChleHAgJiAxKQoJCQlyZXMgPSAocmVzICogYmFzZSkgJSBNOwoJCWV4cCA+Pj0gMTsKCQliYXNlID0gKGJhc2UgKiBiYXNlKSAlIE07Cgl9CgoJcmV0dXJuIHJlczsKfQpsbCBNT0QobGwgeCkgewoJcmV0dXJuICh4ICUgTSArIE0pICUgTTsKfQp2b2lkIGRmcyhpbnQgeCwgaW50IGwgPSAwLCBpbnQgc3VtID0gMCkgewoJZm9yIChpbnQgaSA9IDA7IGkgPCBhcnJbeF0uc2l6ZSgpOyArK2kpIHsKCQlpbnQgeSA9IGFyclt4XVtpXS5maXJzdCwgaW5keCA9IGFyclt4XVtpXS5zZWNvbmQ7CgkJb3V0W2xdID0gaW5keDsKCQlkZnMoeSwgbCArIDEsIHN1bSArIGxlbltpbmR4XSk7Cgl9CglpZiAoYXJyW3hdLmVtcHR5KCkgJiYgc3VtID49IGxuKSB7CgkJbGwgdG1wID0gMDsKCQlpbnQgayA9IDAsIGN1cnIgPSAwOwoJCWZvciAoaW50IGkgPSAwOyBpIDwgbG47ICsraSkgewoJCQljaGFyIGMgPSBzW291dFtjdXJyXV1ba107CgkJCXRtcCA9ICgodG1wICogQkFTRSkgJSBNICsgdmFsWyhpbnQpIGNdKSAlIE07CgkJCSsrazsKCQkJaWYgKGsgPT0gbGVuW291dFtjdXJyXV0pCgkJCQljdXJyKyssIGsgPSAwOwoJCX0KCQljbnQgKz0gKHRtcCA9PSBoKTsKCQlpbnQgX2sgPSAwLCBfY3VyciA9IDA7CgkJZm9yIChpbnQgaSA9IDE7IGkgPCBzdW0gLSBsbiArIDE7ICsraSkgewoJCQljaGFyIGMgPSBzW291dFtjdXJyXV1ba107CgkJCWNoYXIgZCA9IHNbb3V0W19jdXJyXV1bX2tdOwoJCQl0bXAgPSBNT0QodG1wIC0gKHZhbFsoaW50KSBkXSAqIHApICUgTSk7CgkJCXRtcCA9ICgodG1wICogQkFTRSkgJSBNICsgdmFsWyhpbnQpIGNdKSAlIE07CgkJCWNudCs9KGggPT0gdG1wKTsKCQkJKytrOwoJCQkrK19rOwoJCQlpZiAoayA9PSBsZW5bb3V0W2N1cnJdXSkKCQkJCWN1cnIrKywgayA9IDA7CgkJCWlmIChfayA9PSBsZW5bb3V0W19jdXJyXV0pCgkJCQlfY3VycisrLCBfayA9IDA7CgoJCX0KCX0KfQppbnQgbWFpbigpIHsKCWludCBpZCA9IDE7Cglmb3IgKGludCBpID0gJ0EnOyBpIDw9ICdaJzsgKytpKQoJCXZhbFtpXSA9IGlkKys7Cglmb3IgKGludCBpID0gJ2EnOyBpIDw9ICd6JzsgKytpKQoJCXZhbFtpXSA9IGlkKys7Cglmb3IgKGludCBpID0gJzAnOyBpIDw9ICc5JzsgKytpKQoJCXZhbFtpXSA9IGlkKys7CglzY2FuZigiJWQiLCAmbik7CglhcnIuY2xlYXIoKTsKCWFyci5yZXNpemUobik7Cglmb3IgKGludCBpID0gMDsgaSA8IG4gLSAxOyArK2kpIHsKCQlzY2FuZigiJWQgJWQgJXMiLCAmeCwgJnksIHNbaV0pOwoJCWxlbltpXSA9IHN0cmxlbihzW2ldKTsKCQlhcnJbeF0ucHVzaF9iYWNrKG1ha2VfcGFpcih5LCBpKSk7Cgl9CgljaGFyIHRbODBdOwoJc2NhbmYoIiAlcyIsIHQpOwoJbG4gPSBzdHJsZW4odCk7CgloID0gMDsKCWZvciAoaW50IGkgPSAwOyBpIDwgbG47ICsraSkKCQloID0gKGggKiBCQVNFICsgdmFsWyhpbnQpIHRbaV1dKSAlIE07CglwID0gcG93ZXIoQkFTRSwgbG4gLSAxKTsKCWRmcygwKTsKCXByaW50ZigiJWRcbiIsY250KTsKCXJldHVybiAwOwp9Cg==