#include <bits/stdc++.h>
using namespace std;

const int N = 100005;
vector<int> tree[N];
int redCount[N]; // 每个节点的子树中红色节点的个数(含自己)
char color[N];

// DFS 预处理,返回以 u 为根的子树红色节点个数
int dfs(int u) {
    redCount[u] = (color[u] == 'R') ? 1 : 0;
    for (int v : tree[u]) {
        redCount[u] += dfs(v);
    }
    return redCount[u];
}

int main() {
    int n;
    cin >> n;

    // 构建树(节点编号从 1 到 n,根是 1)
    for (int i = 2, p; i <= n; ++i) {
        cin >> p;
        tree[p].push_back(i);
    }

    // 输入颜色(字符串下标从0开始)
    string s;
    cin >> s;
    for (int i = 1; i <= n; ++i) {
        color[i] = s[i - 1];
    }

    // 预处理每个子树红色节点个数
    dfs(1);

    // 回答查询
    int q;
    cin >> q;
    while (q--) {
        int x;
        cin >> x;
        cout << redCount[x] << "\n";
    }

    return 0;
}