#include<stdio.h>

typedef struct q
{
	char Op;
	int n;
}q;

int t[100001],pa[100001],mark[100001],N,Q,ans,j;
q query[100001];
void i(int n)
{
	for(j=0;j<=n;j++)
	{
		t[j]=j;
		pa[j]=mark[j]=0;
	}
	pa[1]=mark[1]=1;
}

int p(int n)
{
	if(t[n]==n)
		return n;
	else
		return t[n]=p(t[n]);
}

void u(int a,int b)
{
	t[p(a)]=p(b);
}

int main()
{
	while(scanf("%d%d",&N,&Q)&&N!=0&&Q!=0)
	{
		ans=0;
		for(i(N),j=2;j<=N;j++)
			scanf("%d\n",&pa[j]);
		for(j=0;j<Q;j++)
		{
			scanf("%c%d\n",&query[j].Op,&query[j].n);
			if(query[j].Op=='M')
			{
				if(mark[query[j].n])
					query[j].Op='X';
				else
					mark[query[j].n]=1;
			}
		}
		for(j=1;j<=N;j++)
			if(!mark[j])
				u(j,pa[j]);
		for(j=Q-1;j>=0;j--)
		{
			if(query[j].Op=='M')
				u(query[j].n,pa[query[j].n]);
			else if(query[j].Op=='Q')
				ans+=p(query[j].n);
		}
		printf("%d\n",ans);
	}
	return 0;
}