#include <bits/stdc++.h>
using namespace std;
long long int power(long long int x, long long int y) {
  long long int res = 1;
  while (y) {
    if (y & 1) res = (res * x) % 1000000007;
    y = y / 2, x = (x * x) % 1000000007;
  }
  return res % 1000000007;
}
long long int binpower(long long int x, long long int y, long long int pp) {
  long long int res = 1;
  while (y) {
    if (y & 1) res = (res * x) % pp;
    y = y / 2, x = (x * x) % pp;
  }
  return res % pp;
}
long long int hash1[1000001];
long long int hash2[1000001];
long long int pwr1[1000001];
long long int pwr2[1000001];
long long int mod1 = 1e9 + 21;
long long int mod2 = 1e9 + 9;
long long int p1 = 31;
long long int p2 = 43;
long long int n;
string s[100001];
string t;
vector<vector<long long int> > arr(100001);
pair<long long int, long long int> fin;
long long int ans = 0;
long long int tot = 0;
pair<long long int, long long int> gethash(long long int l, long long int r) {
  long long int val1 =
      (hash1[r] - (hash1[l - 1] * pwr1[r - l + 1]) % mod1 + mod1) % mod1;
  long long int val2 =
      (hash2[r] - (hash2[l - 1] * pwr2[r - l + 1]) % mod2 + mod2) % mod2;
  return make_pair(val1, val2);
}
void dfs(long long int u) {
  long long int i;
  for (i = 0; i < s[u].size(); i++) {
    long long int pos = tot + i + 1;
    hash1[pos] = (hash1[pos - 1] * p1 % mod1 + (s[u][i] - 'a' + 1)) % mod1;
    hash2[pos] = (hash2[pos - 1] * p2 % mod2 + (s[u][i] - 'a' + 1)) % mod2;
    if (pos >= t.size())
      if (gethash(pos - t.size() + 1, pos) == fin) ans++;
  }
  tot += s[u].size();
  for (i = 0; i < arr[u].size(); i++) dfs(arr[u][i]);
  tot -= s[u].size();
}
void hashing(string s) {
  long long int i;
  pwr1[0] = 1;
  pwr2[0] = 1;
  for (i = 1; i <= 300005; i++) {
    pwr1[i] = (p1 * pwr1[i - 1]) % mod1;
    pwr2[i] = (p2 * pwr2[i - 1]) % mod2;
  }
}
signed main() {
  ios_base::sync_with_stdio(false);
  cin.tie(0);
  cout.tie(0);
  cin >> n;
  long long int i;
  for (i = 2; i <= n; i++) {
    long long int p;
    cin >> p >> s[i];
    arr[p].push_back(i);
  }
  hashing(t);
  cin >> t;
  hash1[0] = 0;
  hash2[0] = 0;
  for (i = 0; i < t.length(); i++) {
    hash1[i + 1] = (hash1[i] * p1 % mod1 + (t[i] - 'a' + 1)) % mod1;
    hash2[i + 1] = (hash2[i] * p2 % mod2 + (t[i] - 'a' + 1)) % mod2;
  }
  fin = make_pair(hash1[t.length()], hash2[t.length()]);
  dfs(1);
  cout << ans;
}
