#include<bits/stdc++.h>
using namespace std;

vector<pair<int, char>> graf[300099];
int n, st;
int u, v, izui, izuo, izvi, izvo, brojac;
int brojs;
bool sus;
void dfs(int node) {
    for(auto prvi:graf[node]) {
        if(prvi.second=='S') continue;
        if(prvi.second=='I' && node==u) ++izui;
        if(prvi.second=='O' && node==u) ++izuo;
        if(prvi.second=='I' && node==v) ++izvi;
        if(prvi.second=='O' && node==v) ++izvo;
        for(auto drugi:graf[prvi.first]) {
            if(drugi.first==node) continue;
            if(prvi.second!=drugi.second) ++brojac;
        }
    }
}
int main() {
    ios_base::sync_with_stdio(false); cin.tie(NULL); cout.tie(NULL);

    cin >> n;
    if(n<=1000) {st=2;}
    sus=true;
    for(int i=0; i<n-1; ++i) {
        int x, y; char c;
        if(abs(x-y)!=1) sus=false;
        cin >> x >> y >> c;
        graf[u].push_back(make_pair(v, c));
        graf[v].push_back(make_pair(u, c));
        if(c=='S') {
            ++brojs;
            u=x; v=y;
        }
    }

    if(brojs==1) st=1;
    else if(sus) st=3;

    if(st==1) {
        dfs(u);
        dfs(v);
        brojac+=izui*izvo+izuo*izvi;
        cout << brojac;
    }
    else if(st==2) {

    }
    else if(st==3) {
        int broja=0, brojb=0, brojc=0;

    }
    else {
        /// 4. i 5. zajedno, 5. ce dati WA
    }
    return 0;
}