#include <bits/stdc++.h>
using namespace std;
const int mxN=300005;
char sl;
int a, b, sol, n;
struct slog{
   char slovo;
   int a, b;
}pom;
int imam[1000];
vector <slog> stablo[mxN];
bool poseceni[mxN];
string rec;

void dfs(int cvor, int dubina){
   if(dubina==3){
      if(imam['S'] && imam['I'] && imam['O']) sol++;
      return;
   }
   for(int i=0; i<stablo[cvor].size(); i++){
      int prvi=stablo[cvor][i].a;
      int drugi=stablo[cvor][i].b;
      char sl=stablo[cvor][i].slovo;
//      cout<<"prvi=="<<prvi<<" drugi=="<<drugi<<endl;
      if(!imam[sl]){
         imam[sl]=1;
         dfs(drugi, dubina+1);
         imam[sl]=0;
      }
   }
}
int main(){
   cin>>n;
   for(int i=1; i<n; i++){
      cin>>a>>b;
      cin>>sl;
//      cout<<"1\n";
      pom.a=a;
      pom.b=b;
      pom.slovo=sl;
      stablo[a].push_back(pom);
//      cout<<"2\n";

      pom.a=b;
      pom.b=a;
      stablo[b].push_back(pom);
   }
//   cout<<"unos\n";
   for(int i=1; i<=n; i++){
      memset(imam, 0, sizeof(imam));
//      cout<<"dfs\n";
      dfs(i, 0);

   }

   cout<<sol/2<<endl;

   return 0;
}