using System;

namespace Sante
{
    class Program
    {
        struct Put
        {
            public int pocetak;
            public int kraj;
            public int tipPuta;
        }

        static int najboljiPut = -1;

        static void TraziPut(int trenutnaPozicija, int krajnjaPozicija, int trenutnoStanje, int brojPromenaStanja, Put[]putevi)
        {
            if(trenutnaPozicija == krajnjaPozicija)
            {
                if(najboljiPut!=-1 && najboljiPut < brojPromenaStanja)
                {
                    return;
                }
                najboljiPut = brojPromenaStanja;
                return;
            }
            for(int i = 0; i < putevi.Length; i++)
            {
                if(putevi[i].pocetak == trenutnaPozicija)
                {
                    if (trenutnoStanje != putevi[i].tipPuta)
                    {
                        brojPromenaStanja++;
                    }
                    TraziPut(putevi[i].kraj, krajnjaPozicija, putevi[i].tipPuta, brojPromenaStanja, putevi);
                }
            }
        }

        static void Main(string[] args)
        {
            string[] input = Console.ReadLine().Split();

            int m = int.Parse(input[1]);

            Put[] putevi = new Put[m];
            for(int i = 0; i < m; i++)
            {
                input = Console.ReadLine().Split();
                putevi[i].pocetak = int.Parse(input[0]);
                putevi[i].kraj = int.Parse(input[1]);
                putevi[i].tipPuta = int.Parse(input[2]);
            }

            input = Console.ReadLine().Split();
            int pocetak = int.Parse(input[0]);
            int kraj = int.Parse(input[1]);

            TraziPut(pocetak, kraj, 0, 0, putevi);
            Console.WriteLine(najboljiPut);
        }
    }
}