#include <iostream>
using namespace std;
int n,a[50000][10000],viz[50000];
char s[50000];
int fre[30];


int parcurge(int r,int y)
{if(r==y){fre[s[y-1]-'a']++;return 1;}
int i,re;
for(re=0,i=1;i<=a[r][0];i++)
    if(!viz[a[r][i]])
   {viz[a[r][i]]=1;
    if(parcurge(a[r][i],y))
       re=1;
    }

 if(re)
 fre[s[r-1]-'a']++;


 return re;
}




int main()
{char c;
int cont,i,x,m,y;
    cin>>n>>m;
cin.get();
cin.getline(s,100);
for(i=1;i<n;i++)
   {cin>>x>>y;
   a[x][0]++;
   a[x][a[x][0]]=y;
   a[y][0]++;
   a[y][a[y][0]]=x;
   }
int t;

 while(m--)
 {cin>>t;
  if(t==1)
   {cin>>x>>y;
    for(i=1;i<=n;i++)
        viz[i]=0;
    for(i=0;i<26;i++)
        fre[i]=0;
   viz[x]=1;
   parcurge(x,y);
   cont=0;
   for(i=0;i<26;i++)
     if(fre[i]%2)
     cont++;
   cout<<cont<<endl;

   }
   else
   {cin>>x>>c;
   n++;s[n-1]=c;
   a[x][0]++;
   a[x][a[x][0]]=n;
   a[n][0]++;
   a[n][a[n][0]]=x;
    }
 }
}