#include <bits/stdc++.h>
#define pb push_back
#define pf push_front
#define popb pop_back
#define popf pop_front
using namespace std;
typedef long long ll;
vector<ll> ad[300000];
void dfs1(int s, int e)
{
    for(auto u:ad[s])
    {
        if(u!=e) dfs1(u, s);
    }
}

void dfs(ll s,ll e, vector<ll>&bio, vector<vector<ll>>&brs, vector<vector<ll>>&bri, vector<vector<ll>>&bro, vector<vector<ll>>&S, vector<vector<ll>>&I, vector<vector<ll>>&O, vector<ll>&lol)
{
    for(ll i=0; i<bio.size(); i++)
    {
        brs[s][bio[i]]=brs[e][bio[i]]+S[s][e];
        brs[bio[i]][s]=brs[e][bio[i]]+S[s][e];
        bri[s][bio[i]]=bri[e][bio[i]]+I[s][e];
        bri[bio[i]][s]=bri[e][bio[i]]+I[s][e];
        bro[s][bio[i]]=bro[e][bio[i]]+O[s][e];
        bro[bio[i]][s]=bro[e][bio[i]]+O[s][e];
        if(brs[s][bio[i]]==bri[s][bio[i]] && brs[s][bio[i]]==bro[s][bio[i]] && brs[s][bio[i]]!=0)
        {
            lol.pb(0);
        }
    }
    bio.pb(s);
    brs[s][s]=0;
    bri[s][s]=0;
    bro[s][s]=0;
    for(auto u:ad[s])
    {
        if(u!=e)
        {
            dfs(u, s, bio, brs, bri, bro, S, I, O, lol);
        }
    }
}

int main()
{
	ios::sync_with_stdio(0);
	cin.tie(0);
	ll n, x, y;
	char c;
	cin >> n;
	vector<ll> bio;
	vector<vector<ll>> brs;
	vector<vector<ll>> bri;
	vector<vector<ll>> bro;
	vector<vector<ll>> S;
	vector<vector<ll>> I;
	vector<vector<ll>> O;
	vector<ll> lol;
	for(ll i=0; i<=n; i++)
    {
        for(ll j=0; j<=n; j++)
        {
            lol.pb(0);
        }
        brs.pb(lol);
        bri.pb(lol);
        bro.pb(lol);
        S.pb(lol);
        I.pb(lol);
        O.pb(lol);
        lol.clear();
    }
	for(ll i=0; i<n-1; i++)
    {
        cin >> x >> y >>c;
        ad[x].pb(y);
        ad[y].pb(x);
        if(c=='S')
        {
            S[x][y]=1;
            S[y][x]=1;
            I[x][y]=0;
            I[y][x]=0;
            O[x][y]=0;
            O[y][x]=0;
        }
        if(c=='I')
        {
            S[x][y]=0;
            S[y][x]=0;
            I[x][y]=1;
            I[y][x]=1;
            O[x][y]=0;
            O[y][x]=0;
        }
        if(c=='O')
        {
            S[x][y]=0;
            S[y][x]=0;
            I[x][y]=0;
            I[y][x]=0;
            O[x][y]=1;
            O[y][x]=1;
        }
    }
    dfs(1, 0, bio, brs, bri, bro, S, I, O, lol);
    cout << lol.size() << "\n";
}