#include<bits/stdc++.h>
using namespace std;
struct slog{
    int a,b;
    char c;
}Grane[300009];
vector<slog>Povezani[300009];
bool imam[209];
int N;
long long sol;
void rek(int k,int dubina){
    if(dubina==3){
        if(imam['S']==true and imam['I']==true and imam['O']==true)sol++;
        return;
    }
    for(int i=0; i<Povezani[k].size(); i++){
        int b=Povezani[k][i].b;
        char c=Povezani[k][i].c;
        if(imam[c]==false){
            imam[c]=true;
            rek(b,dubina+1);
            imam[c]=false;
        }
    }
    return;
}
int main(){
    cin>>N;
    for(int i=1; i<=N-1; i++){
        cin>>Grane[i].a>>Grane[i].b>>Grane[i].c;
        slog sl;
        sl.a=Grane[i].a;
        sl.b=Grane[i].b;
        sl.c=Grane[i].c;
        Povezani[Grane[i].a].push_back(sl);
        swap(sl.a,sl.b);
        Povezani[Grane[i].b].push_back(sl);
    }
    for(int i=1; i<=N; i++){
        memset(imam,false,sizeof(imam));
        rek(i,0);
    }

    cout<<sol/2<<endl;
    return 0;
}