#include<stdio.h>

typedef struct {
    int tata;
    char c;
    int nivel;
} NODE;

NODE nn[100001];
int n, m, x, y, t, chars[26], ans, gata;
char sir[100001];

void resetChars() {
    for(int i = 0; i < 26; ++i) {
        chars[i] = 0;
    }
}

int main() {
    //FILE *f = fopen("in.in", "r");
    //fscanf(f, "%d%d", &n, &m);
    scanf("%d%d", &n, &m);
    scanf("%s", sir);
    for(int i = 0; i < n; ++i) {
        nn[i + 1].c = sir[i];
    }
    for(int i = 0; i < n - 1; ++i) {
        scanf("%d%d", &x, &y);
        nn[y].tata = x;
    }
    for(int i = 1; i <= n; ++i) {
        int temp = i, nivel = 0;
        while(nn[temp].tata) {
            ++nivel;
            temp = nn[temp].tata;
        }
        nn[i].nivel = nivel;
    }
    for(int i = 0; i < m; ++i) {
        //fscanf(f, "%d", &t);
        scanf("%d", &t);
        if(t == 2) {
            //fscanf(f, "%d%s",  &x, sir);
            scanf("%d%s",  &x, sir);
        }
        else scanf("%d%d", &x, &y); //fscanf(f, "%d%d", &x, &y);
        if(t == 2) {
            nn[++n].tata = x;
            nn[n].c = sir[0];
            nn[n].nivel = nn[x].nivel + 1;
        }
        else {
            resetChars();
            gata = ans = 0;
            if(nn[x].nivel < nn[y].nivel) {
                int temp = x;
                x = y;
                y = temp;
            }
            while(nn[x].tata) {
                chars[nn[x].c - 97] = 1 - chars[nn[x].c - 97];
                if(chars[nn[x].c - 97] & 1) ++ans;
                else --ans;
                if(x == y) {
                    gata = 1;
                    break;
                }
                x = nn[x].tata;
            }
            if(!gata) {
                while(nn[y].tata) {
                    chars[nn[y].c - 97] = 1 - chars[nn[y].c - 97];
                    if(chars[nn[y].c - 97] & 1) ++ans;
                    else --ans;
                    y = nn[y].tata;
                }
                chars[nn[y].c - 97] = 1 - chars[nn[y].c - 97];
                if(chars[nn[y].c - 97] & 1) ++ans;
                else --ans;
            }
            printf("%d\n", ans);
        }
    }
}