#include <iostream>
#include <bits/stdc++.h>
using namespace std;
int N;
struct k{
    int x,y;
    char S;
    bool used;
};
struct co{
    int S,I,O;
};
void in(int i, co co, k a[]){
    if(a[i].S=='S')co.S++;
    else if(a[i].S=='I')co.I++;
    else co.O++;
}
void cleanse(k k[]){
    for(int i=0;i<2*N-1;i++){
        k[i].used=false;
    }
}
void c(int bp1[],int bp[],co co){
    for(int i=0;i<N;i++){
        bp[i+1]=bp1[i+1];
    }
    co.S=0;
    co.I=0;
    co.O=0;
}
int main()
{
    cin>>N;
    const int N1=2*N-1;
    const int n=N;

    int bp[n],bp1[n],rez=0;
    co co;
    k a[N1];
    int x,y;
    char z;
    for(int i=0;i<N-1;i++){
        cin>>x>>y>>z;
        a[i].x=x;
        a[N+i-1].y=x;
        a[i].y=y;
        a[N+i-1].x=y;

        a[i].S=z; a[N+i-1].S=z;
        bp[x]++; bp[y]++;
    }

    int r;
    for(int i=0;i<n;i++){
        bp1[i+1]=bp[i+1];
    }

    for(int i=0;i<2*N-1;i++){
        r=a[i].x;
        bp[a[i].x]--;
        in(i,co,a);
        for(int j=0;j<2*N-1;j++){
            if(!a[j].used&&r==a[j].x){
                r=a[j].y;

                bp[a[j].y]--;
                if(bp[a[j].y]==0)a[j].used=true;
                in(j,co,a);
                cout<<co.S<<co.I<<co.O;
                if(co.S==co.I&&co.S==co.O)rez=rez+1;
                if(a[j].used){c(bp1,bp,co);cout<<}

            }

        }
        cleanse(a);

    }
    cout<<rez;
}