#include <bits/stdc++.h>

using namespace std;

int n,a,b,v,u;
char c;
vector<pair<int,char>> V[300001];
vector<pair<int,pair<int,int>>> P;
multiset<pair<int,pair<int,int>>> S[300001];

void dfs(int t,int r)
{
    S[t].insert({0,{0,0}});
    for(int j=0; j<V[t].size(); j++)
    {
        if(V[t][j].first!=r)
        {
            dfs(V[t][j].first,t);
            for(auto k: S[V[t][j].first])
            {
                if(V[t][j].second=='S')
                {
                    k.first++;
                }
                else
                {
                    if(V[t][j].second=='I')
                    {
                        k.second.first++;
                    }
                    else
                    {
                        k.second.second++;
                    }
                }
                if(k.first==1 && k.second.first==1 && k.second.second==1)
                {
                    k.first--;
                    k.second.first--;
                    k.second.second--;
                }
                v = max(k.first,k.second.first);
                v = max(v,k.second.second);
                u += S[t].count({v-k.first,{v-k.second.first,v-k.second.second}});
                P.push_back(k);
            }
            for(auto k: P)
            {
                S[t].insert(k);
            }
            P.clear();
        }
    }
}

int main()
{
    scanf("%d",&n);
    for(int i=1; i<n; i++)
    {
        scanf("%d %d %c",&a,&b,&c);
        V[a].push_back({b,c});
        V[b].push_back({a,c});
    }
    dfs(1,-1);
    printf("%d\n",u);
    return 0;
}