from collections import defaultdict
def solve():
N = int(input())
tree = defaultdict(list)
edge_string = {}
for _ in range(N-1):
u, v, s = input().split()
u = int(u)
v = int(v)
tree[u].append(v)
edge_string[(u, v)] = s
slogan = input().strip()
total = 0
# Perform DFS from root (0)
stack = [(0, "")]
while stack:
node, current_str = stack.pop()
full_str = current_str
# Check all children
for child in tree[node]:
new_str = full_str + edge_string[(node, child)]
count = new_str.count(slogan)
total += count
stack.append((child, new_str))
print(total)
solve()
ZnJvbSBjb2xsZWN0aW9ucyBpbXBvcnQgZGVmYXVsdGRpY3QKCmRlZiBzb2x2ZSgpOgogICAgTiA9IGludChpbnB1dCgpKQogICAgdHJlZSA9IGRlZmF1bHRkaWN0KGxpc3QpCiAgICBlZGdlX3N0cmluZyA9IHt9CiAgICAKICAgIGZvciBfIGluIHJhbmdlKE4tMSk6CiAgICAgICAgdSwgdiwgcyA9IGlucHV0KCkuc3BsaXQoKQogICAgICAgIHUgPSBpbnQodSkKICAgICAgICB2ID0gaW50KHYpCiAgICAgICAgdHJlZVt1XS5hcHBlbmQodikKICAgICAgICBlZGdlX3N0cmluZ1sodSwgdildID0gcwogICAgCiAgICBzbG9nYW4gPSBpbnB1dCgpLnN0cmlwKCkKICAgIHRvdGFsID0gMAogICAgCiAgICAjIFBlcmZvcm0gREZTIGZyb20gcm9vdCAoMCkKICAgIHN0YWNrID0gWygwLCAiIildCiAgICB3aGlsZSBzdGFjazoKICAgICAgICBub2RlLCBjdXJyZW50X3N0ciA9IHN0YWNrLnBvcCgpCiAgICAgICAgZnVsbF9zdHIgPSBjdXJyZW50X3N0cgogICAgICAgIAogICAgICAgICMgQ2hlY2sgYWxsIGNoaWxkcmVuCiAgICAgICAgZm9yIGNoaWxkIGluIHRyZWVbbm9kZV06CiAgICAgICAgICAgIG5ld19zdHIgPSBmdWxsX3N0ciArIGVkZ2Vfc3RyaW5nWyhub2RlLCBjaGlsZCldCiAgICAgICAgICAgIGNvdW50ID0gbmV3X3N0ci5jb3VudChzbG9nYW4pCiAgICAgICAgICAgIHRvdGFsICs9IGNvdW50CiAgICAgICAgICAgIHN0YWNrLmFwcGVuZCgoY2hpbGQsIG5ld19zdHIpKQogICAgCiAgICBwcmludCh0b3RhbCkKCnNvbHZlKCk=
MTEKMCAyIFdlbGNvbQowIDcgVmlldE4KMiA4IG5hdVRLCjcgMyBhbQo3IDkgbmF1VEsKMiA1IGVLVHVhbgo1IDQgSU9JS1R1YW5JTwo3IDEgSU9JCjUgNiBJT0kyMwo0IDEwIEkyMDIzCktUdWFuSU9J
11
0 2 Welcom
0 7 VietN
2 8 nauTK
7 3 am
7 9 nauTK
2 5 eKTuan
5 4 IOIKTuanIO
7 1 IOI
5 6 IOI23
4 10 I2023
KTuanIOI