using System;
using System.Linq;

namespace tk1z4
{
    class Program
    {
        public static int krajnje;
        public static char[,] graf = new char[30001, 30001];
        //public static int br_cvorova;
        static bool[] FnRcr(char ulazni, int vrsta, int kolona, int broj_cvorova)
        {
            bool[] iskaz = new bool[4];
            switch (ulazni)
            {
                case 'S':
                    iskaz[0] = true;
                    break;
                case 'I':
                    iskaz[1] = true;
                    break;
                case 'O':
                    iskaz[2] = true;
                    break;
            }
            for (int i = vrsta+1; i <= broj_cvorova; i++)
            {
                if (graf[i, kolona] == '\0')
                {
                    continue;
                }
                if (FnRcr(graf[kolona, i], kolona, i, broj_cvorova)[0])
                {
                    iskaz[0] = true;
                }
                if (FnRcr(graf[kolona, i], kolona, i, broj_cvorova)[1])
                {
                    iskaz[1] = true;
                }
                if (FnRcr(graf[kolona, i], kolona, i, broj_cvorova)[2])
                {
                    iskaz[2] = true;
                }
                if (iskaz[0] && iskaz[1] && iskaz[2])
                {
                    krajnje++;
                    Console.WriteLine(vrsta + "   " + kolona);
                }
            }
            

            return iskaz;
        }
        public static void Main(string[] args)
        {

             krajnje = 0;
            int br1, br2;
            char br3;
            string[] unos;
            int br_cvorova = Convert.ToInt32(Console.ReadLine());
            for (int i = 0; i < br_cvorova - 1; i++)
            {
                unos = Console.ReadLine().Split();
                br1 = Convert.ToInt32(unos[0]);
                br2 = Convert.ToInt32(unos[1]);
                br3 = Convert.ToChar(unos[2]);
              
                graf[br1, br2] = br3;
                graf[br2, br1] = br3;
            }
            for (int i = 1; i <= br_cvorova; i++)
            {
                for (int j = 1; j <= br_cvorova ; j++)
                {
                    if (graf[i, j] == '\0')
                        continue;
                    if (FnRcr(graf[i, j], i, j, br_cvorova)[0] && FnRcr(graf[i, j], i, j, br_cvorova)[1] && FnRcr(graf[i, j], i, j, br_cvorova)[2])
                    {
                        //krajnje++;
                        Console.WriteLine(i+"   "+j +" MEDJUREZULTAT");
                    }
                }
            }
            Console.WriteLine(krajnje); //Da li je u pravu?
        }
    }
}