#include <iostream> using namespace std; struct ChildNode { int child; struct ChildNode *next; }; struct ParentNode { int i; struct ChildNode *next; }; int Count(char *color, struct ParentNode *arr, int i) { int count = 0; if (color[i] == 'R') { count++; } struct ChildNode *p = arr[i].next; while(p != NULL) { count += Count(color, arr, p->child); p = p->next; } return count; } int main() { int n = 0; cin >> n; int a = 0; int q = 0; struct ParentNode arr[n]; struct ChildNode *z; for (int i = 0; i < n; i++) { arr[i].i = 0; arr[i].next = NULL; } for (int i = 1; i < n; i++) { cin >> a; struct ChildNode *p = new struct ChildNode; p->child = i; p->next = NULL; z = arr[a-1].next; if (z == NULL) { arr[a-1].next = p; } else { while(z->next != NULL) { z = z->next; } z->next = p; } } char color[n+1]; cin >> color; for (int j = 0; j < n; j++){ arr[j].i = Count(color, arr, j); } cin >> q; int x = 0; while(q--) { cin >> x; cout << arr[x-1].i << endl; } return 0; }