using System;
using System.Collections.Generic;

namespace ConsoleApp5
{
    class Program
    {
        static int minimalna = int.MaxValue;
        static int racun(List<Tuple<int, int>>[] graf, int pozicija, int kraj, bool iskljucena, int brojac, List<int> posecen)
        {
            if (pozicija == kraj)
            {
                if (brojac < minimalna) minimalna = brojac;
                return minimalna;
            }
            posecen.Add(pozicija);
            for(int i = 0; i < graf[pozicija].Count; i++)
            {
                if (!posecen.Contains(graf[pozicija][i].Item1))
                {
                    int pomBrojac = brojac;
                    bool pomIskljucena = iskljucena;
                    if((iskljucena && graf[pozicija][i].Item2 == 1) || (!iskljucena && graf[pozicija][i].Item2 == 0))
                    {
                        pomBrojac++;
                        pomIskljucena = !pomIskljucena;
                    }
                    racun(graf, graf[pozicija][i].Item1, kraj, pomIskljucena, pomBrojac, kopija(posecen));
                }
            }
            return minimalna;
        }
        static List<int> kopija(List<int> posecen)
        {
            List<int> novi = new List<int>();
            for(int i = 0; i < posecen.Count; i++)
            {
                novi.Add(posecen[i]);
            }
            return novi;
        }
        static void Main(string[] args)
        {
            string[] unos1 = Console.ReadLine().Split();
            int n = Convert.ToInt32(unos1[0]);
            List<Tuple<int, int>>[] graf = new List<Tuple<int, int>>[n];
            for (int i = 0; i < n; i++) graf[i] = new List<Tuple<int, int>>();
            int m = Convert.ToInt32(unos1[1]);
            for(int i = 0; i < m; i++)
            {
                string[] unos2 = Console.ReadLine().Split();
                int index1 = Convert.ToInt32(unos2[0]) - 1;
                int index2 = Convert.ToInt32(unos2[1]) - 1;
                int stanje = Convert.ToInt32(unos2[2]);
                graf[index1].Add(Tuple.Create(index2, stanje));
                graf[index2].Add(Tuple.Create(index1, stanje));
            }
            string[] unos3 = Console.ReadLine().Split();
            int pocetak = Convert.ToInt32(unos3[0]) - 1;
            int kraj = Convert.ToInt32(unos3[1]) - 1;
            int resenje = racun(graf, pocetak, kraj, true, 0, new List<int>());
            if (resenje == int.MaxValue) Console.WriteLine("-1");
            else Console.WriteLine(resenje);
        }
    }
}