#include <bits/stdc++.h>
using namespace std;
#define ll int
#define N 500100
ll n,x,y,q,d,Depth[N];
vector<ll> Adj[N];
string s;
map<ll,ll> Res[N],Ret[N];
map<ll, map<char,bool> > my[N];
void add(ll u,ll depth,map<char,bool > mp)
{
for(auto p : mp)
{
Res[u][depth]+=(my[u][depth][p.first] ? -1 : +1);
my[u][depth][p.first]=! my[u][depth][p.first];
}
}
void Merge(ll u,ll v)
{
if(my[u].size() < my[v].size())
{
swap(Res[u],Res[v]);
swap(my[u],my[v]);
}
for(auto p : my[v])
add(u,p.first,p.second);
Ret[u]=Res[u];
}
void Dfs(ll u,ll par)
{
for(ll v : Adj[u])
{
if(v==par) continue;
Dfs(v,u);
Merge(u,v);
}
}
void getDepth(ll u,ll par)
{
Depth[u]=Depth[par]+1;
for(ll v: Adj[u])
if(v!=par)
getDepth(v,u);
}
int main()
{
ios::sync_with_stdio(0);
cin>>n>>q;
for(ll i=2 ; i<=n ; i++)
{
cin>>x;
Adj[x].push_back(i);
Adj[i].push_back(x);
}
getDepth(1,0);
cin>>s;
for(ll i=1 ; i<=n; i++) my[i][Depth[i]][s[i-1]]=1 , Res[i][Depth[i]]++;
Dfs(1,-1);
while(q--)
{
cin>>x>>d;
cout<<(Ret[x][d]<=1 ? "Yes" : "No")<<endl;
}
return 0;
}
I2luY2x1ZGUgPGJpdHMvc3RkYysrLmg+CnVzaW5nIG5hbWVzcGFjZSBzdGQ7CiNkZWZpbmUgbGwgaW50CiNkZWZpbmUgTiA1MDAxMDAKbGwgbix4LHkscSxkLERlcHRoW05dOwp2ZWN0b3I8bGw+IEFkaltOXTsKc3RyaW5nIHM7Cm1hcDxsbCxsbD4gUmVzW05dLFJldFtOXTsKbWFwPGxsLCBtYXA8Y2hhcixib29sPiA+IG15W05dOwp2b2lkIGFkZChsbCB1LGxsIGRlcHRoLG1hcDxjaGFyLGJvb2wgPiBtcCkKewogICAgZm9yKGF1dG8gcCA6IG1wKQogICAgewogICAgICAgIFJlc1t1XVtkZXB0aF0rPShteVt1XVtkZXB0aF1bcC5maXJzdF0gPyAtMSA6ICsxKTsKICAgICAgICBteVt1XVtkZXB0aF1bcC5maXJzdF09ISBteVt1XVtkZXB0aF1bcC5maXJzdF07CiAgICB9Cn0Kdm9pZCBNZXJnZShsbCB1LGxsIHYpCnsKCWlmKG15W3VdLnNpemUoKSA8IG15W3ZdLnNpemUoKSkKICAgIHsKICAgICAgICBzd2FwKFJlc1t1XSxSZXNbdl0pOwogICAgICAgIHN3YXAobXlbdV0sbXlbdl0pOwogICAgfQogICAgZm9yKGF1dG8gcCAgOiAgbXlbdl0pCiAgICAgICAgYWRkKHUscC5maXJzdCxwLnNlY29uZCk7CiAgICBSZXRbdV09UmVzW3VdOwp9CnZvaWQgRGZzKGxsIHUsbGwgcGFyKQp7CiAgICBmb3IobGwgdiA6IEFkalt1XSkKICAgIHsKICAgICAgICBpZih2PT1wYXIpICBjb250aW51ZTsKICAgICAgICBEZnModix1KTsKICAgICAgICBNZXJnZSh1LHYpOwogICAgfQp9CnZvaWQgZ2V0RGVwdGgobGwgdSxsbCBwYXIpCnsKICAgIERlcHRoW3VdPURlcHRoW3Bhcl0rMTsKICAgIGZvcihsbCB2OiBBZGpbdV0pCiAgICAgICAgaWYodiE9cGFyKQogICAgICAgICAgICBnZXREZXB0aCh2LHUpOwp9CmludCBtYWluKCkKewogICAgaW9zOjpzeW5jX3dpdGhfc3RkaW8oMCk7CiAgICBjaW4+Pm4+PnE7CiAgICBmb3IobGwgaT0yIDsgaTw9biA7IGkrKykKICAgIHsKICAgICAgICBjaW4+Png7CiAgICAgICAgQWRqW3hdLnB1c2hfYmFjayhpKTsKICAgICAgICBBZGpbaV0ucHVzaF9iYWNrKHgpOwogICAgfQogICAgZ2V0RGVwdGgoMSwwKTsKICAgIGNpbj4+czsKICAgIGZvcihsbCBpPTEgIDsgaTw9bjsgaSsrKSAgICBteVtpXVtEZXB0aFtpXV1bc1tpLTFdXT0xICAgLCAgIFJlc1tpXVtEZXB0aFtpXV0rKzsKICAgIERmcygxLC0xKTsKICAgIHdoaWxlKHEtLSkKICAgIHsKICAgICAgICBjaW4+Png+PmQ7CiAgICAgICAgY291dDw8KFJldFt4XVtkXTw9MSA/ICJZZXMiICA6ICJObyIpPDxlbmRsOwogICAgfQogICAgcmV0dXJuIDA7Cn0K