#include <iostream> #include <fstream> #include <cstdio> #include <vector> using namespace std; long t,x,y,n,m,i,j,l[100000]; bool nr[100000][27]; vector <long> v[100000]; char s[100005],c; void update(long nod,long ant) { nr[nod][s[nod]-'a']=1-nr[nod][s[nod]-'a']; for (int i=0;i<l[nod];i++) { if (v[nod][i]!=ant) { for (int j=0;j<=26;j++) nr[v[nod][i]][j]=nr[nod][j]; update(v[nod][i],nod); } } } int main() { cin>>n>>m; cin>>s; for (i=1;i<=n;i++) { cin>>x>>y; l[x]++; v[x].push_back(y); l[y]++; v[y].push_back(x); } update(1,0); long num; for (i=1;i<=m;i++) { cin>>t; if (t==1) { cin>>x>>y; num=0; for (j=0;j<=26;j++) { if ((nr[x][j]+nr[y][j]+nr[1][j])%2==0) num++; } cout<<num<<'\n'; } else { scanf("%ld ",&x); cin>>c; for (j=0;j<=26;j++) { n++; nr[n][j]=nr[x][j]; } nr[n][c-'a']=1-nr[n][c-'a']; } } return 0; }