#include <iostream>
#include <vector>
using namespace std;
#define dim 100005

int n,m;
string s;
vector<int> v[2*dim];
int mask[2*dim];
int T[20][2*dim];
int lvl[2*dim];

void dfs(int s,int father,int Level){
    lvl[s] = Level;
    T[0][s] = father;
    mask[s] ^= mask[father];
    for(int i = 0; i < v[s].size(); i++)
        if(v[s][i] != father)
            dfs(v[s][i],s,Level+1);
}

void build_lca(){
    for(int k = 1; (1 << k) <= n; k++)
        for(int i = 1; i <= n; i++)
            T[k][i] = T[k-1][T[k-1][i]];
}

int lca(int x,int y){
    if(lvl[x] < lvl[y]){
        x ^= y;
        y ^= x;
        x ^= y;
    }
    int log1,log2;
    for(log1 = 1; (1 << log1) < lvl[x]; log1++);
    for(log2 = 1; (1 << log2) < lvl[y]; log2++);
    for(int k = log1; k >= 0; k--)
        if(lvl[x] - (1 << k) >= lvl[y]) x = T[k][x];
    if(x == y) return x;
    for(int k = log2; k >= 0; k--)
        if(T[k][x] > 0 && T[k][x] != T[k][y]){
            x = T[k][x];
            y = T[k][y];
        }
    return T[0][x];
}

void update(int nod,char c){
    n++;
    mask[n] |= (1 << (c - 'a'));
    mask[n] ^= mask[nod];
    lvl[n] = lvl[nod]+1;
    T[0][n] = nod;
    for(int k = 1; (1 << k) <= n; k++)
        T[k][n] = T[k-1][T[k-1][n]];
}

int main(){

    cin >> n >> m >> s;

    for(int i = 1; i <= n; i++)
        mask[i] |= (1 << (s[i-1] - 'a'));

    for(int i = 1; i < n; i++){
        int x,y;
        cin >> x >> y;
        v[x].push_back(y);
        v[y].push_back(x);
    }

    dfs(1,0,0);
    build_lca();

    while(m--){
        int t;
        cin >> t;
        if(t == 1){
            int x,y;
            cin >> x >> y;
            int L = lca(x,y);
            int maskAns;
            if(L != x && L != y)
                maskAns = mask[x]^mask[y]^mask[L]^mask[T[0][L]];
            else if(L == x)
                maskAns = mask[y] ^ mask[T[0][x]];
            else
                maskAns = mask[x] ^ mask[T[0][y]];
            int Ans = 0;
            for(int i = 0; i < 26; i++)
                if((maskAns & (1 << i)) > 0) Ans++;
            cout << Ans << "\n";
        }
        else{
            int x;
            char c;
            cin >> x >> c;
            update(x,c);
        }
    }

}