#include<bits/stdc++.h>
using namespace std;
const int N =1e6+10;
char s[N];
int dp[N][2];
vector<int> g[N<<1];
void dfs(int node,int fath)
{
if(s[node]=='W')
dp[node][1]=1;
if(s[node]=='B')
dp[node][0]=1;
for(int i=0;i<g[node].size();i++)
{
int u=g[node][i];
if(u==fath)
continue;
dfs(u,node);
dp[node][0]+=dp[u][0];
dp[node][1]+=dp[u][1];
}
}
int main()
{
int t;
cin>>t;
while(t--)
{
memset(dp,0,sizeof(dp));
int n;
scanf("%d",&n);
for(int i=1;i<=n;i++)
g[i].clear();
for(int i=1,x;i<n;i++)
scanf("%d",&x),g[x].push_back(i+1),g[i+1].push_back(x);
scanf("%s",s+1);
dfs(1,0);
int ans =0;
for(int i=1;i<=n;i++)
if(dp[i][0]==dp[i][1])
ans++;
cout<<ans<<endl;
}
}
求助,不知道为什么T了