using System;

namespace ConsoleApp3
{
    class Program
    {
        struct Put
        {
            public int a;
            public int b;
            public int t;
        }
        static void Main(string[] args)
        {
            int n, m;
            string[] s = Console.ReadLine().Split();
            n = int.Parse(s[0]);
            m = int.Parse(s[1]);
            Put[] putevi = new Put[m];
            for(int i = 0; i < m; i++)
            {
                s = Console.ReadLine().Split();
                putevi[i].a = int.Parse(s[0]);
                putevi[i].b = int.Parse(s[1]);
                putevi[i].t = int.Parse(s[2]);
            }
            int u, v;
            s = Console.ReadLine().Split();
            u = int.Parse(s[0]);
            v = int.Parse(s[1]);
            Put[,] putanje = new Put[putevi.Length, putevi.Length];
            for(int i = 0; i < putevi.Length; i++)
            {
                for(int j = 0; j < putevi.Length; j++)
                {
                    putanje[i, j].a = -1;
                }
            }
            int brr = 0;
            for(int i = 0; i < putevi.Length; i++)
                if (u == putevi[i].a)
                {
                    putanje[brr, 0] = putevi[i];
                    brr++;
                }
            for (int br = 0; br < putevi.Length; br++)
                for(int i = 0; i < putevi.Length; i++)
                {
                    for(int j = 0; j < putevi.Length; j++)
                    {
                        if (putanje[i, br].b == putevi[j].a && putanje[i, br + 1].a == -1) putanje[i, br + 1] = putevi[j];
                        else if (putanje[i, br].b == putevi[j].a && putanje[i, br + 1].a != -1)
                        {
                            for (int x = 0; x < br + 1; x++)
                                putanje[brr, x] = putanje[i, x];
                            putanje[i, br + 1] = putevi[j];
                            brr++;
                        }
                    }
                }
            bool zavrsio = false;
            int najmanjeMenjanja = int.MaxValue;
            for(int i = 0; i < putevi.Length; i++)
            {
                bool z = false;
                int brMenjanja = 0;
                int stanje = 0;
                for(int j = 0; j < putevi.Length; j++)
                {
                    if (putanje[i, j].t != stanje) { brMenjanja++;stanje = putanje[i, j].t; }
                    if (putanje[i, j].b == v) { zavrsio = true; z = true; break; }
                }
                if (z && brMenjanja < najmanjeMenjanja) najmanjeMenjanja = brMenjanja;
                if (putanje[i, 0].a == -1) break;
            }
            if (zavrsio)
                Console.WriteLine(najmanjeMenjanja);
            else
                Console.WriteLine(-1);
        }
    }
}