using System;
using System.Collections.Generic;

namespace ConsoleApplication4
{
    class Program
    {
        static bool mogucnost_dolaska = false;
        static int najmanji_broj_promene_stanja = int.MaxValue;
        static int najbolji_put(int[][] matrica, int trenutna_santa, int dolazna_santa, List<int> predjene_sante, int stanje_masine, int broj_promena_stanja) {
            predjene_sante.Add(trenutna_santa);
            List<int> predjene_sante1 = predjene_sante;
            int broj_promena_stanja1 = broj_promena_stanja;
            int stanje_masine1 = stanje_masine;
            int trenutna_santa1 = trenutna_santa;
            for (int i = 0; i < matrica.Length; i++) {
                if (matrica[i][0] == trenutna_santa) {
                    if (matrica[i][2] != stanje_masine1)
                    {
                        stanje_masine1 = matrica[i][2];
                        broj_promena_stanja1++;
                    }
                    trenutna_santa1 = matrica[i][1];
                    if (trenutna_santa1 == dolazna_santa) {
                        if (najmanji_broj_promene_stanja > broj_promena_stanja1) {
                            najmanji_broj_promene_stanja = broj_promena_stanja1;
                        }
                        mogucnost_dolaska = true;
                    }
                    if (predjene_sante.Contains(trenutna_santa1) == false)
                    {
                        najbolji_put(matrica, trenutna_santa1, dolazna_santa, predjene_sante1, stanje_masine1, broj_promena_stanja1);
                    }

                }
                broj_promena_stanja1 = broj_promena_stanja;
                trenutna_santa1 = trenutna_santa;
                predjene_sante1 = predjene_sante;
                stanje_masine1 = stanje_masine;
                predjene_sante1 = predjene_sante;
            }
            return 0;
        }
        static void Main(string[] args)
        {
            string[] s = Console.ReadLine().Split();
            int u = Convert.ToInt32(s[0]);
            int v = Convert.ToInt32(s[1]);
            int[][] putevi = new int[v][];
            for (int i = 0; i < v; i++)
            {
                putevi[i] = new int[3];
                s = Console.ReadLine().Split();
                int a = Convert.ToInt32(s[0]);
                int b = Convert.ToInt32(s[1]);
                int t = Convert.ToInt32(s[2]);
                putevi[i][0] = a;
                putevi[i][1] = b;
                putevi[i][2] = t;
            }
            s = Console.ReadLine().Split();
            List<int> predjene_sante = new List<int>();
            int stanje_masine = 0;
            int broj_promena_stanja = 0;
            int Mika_santa = Convert.ToInt32(s[0]);
            int Laza_santa = Convert.ToInt32(s[1]);
            najbolji_put(putevi, Mika_santa, Laza_santa, predjene_sante, stanje_masine, broj_promena_stanja);
            if (mogucnost_dolaska == false) {
                najmanji_broj_promene_stanja = -1;
            }
            Console.WriteLine(najmanji_broj_promene_stanja);
            Console.ReadLine();
        }
    }
}