using System;

  internal class Program
  {
    static void Main(string[] args)
    {
        string[] s = Console.ReadLine().Split(' ');
        int N = int.Parse(s[0]);
        int M = int.Parse(s[1]);

        int[] a = new int[M]; //pocetak puta
        int[] b = new int[M]; //kraj puta
        bool[] imaLeda = new bool[M];
        for (int i = 0; i < M; i++)
        {
            string[] unos = Console.ReadLine().Split(' ');
            a[i] = int.Parse(unos[0]);
            b[i] = int.Parse(unos[1]);

            if (int.Parse(unos[2]) == 0) imaLeda[i] = false;
            else imaLeda[i] = true;

        }

        string[] pozicije = Console.ReadLine().Split(' ');
        int mika = int.Parse(pozicije[0]);
        int laza = int.Parse(pozicije[1]);

        int minimalno = 0;
        int preminimalno = 0;
        int kraj = 0;
        bool pronadjeno = false;
        int br = 0;
        //minimalno = -1 ako mika ne moze da dodje do laze

        for (int i = 0; i < M; i++)
        {
            if (a[i]==mika)
            {
                br = i;
                kraj = b[i];
                minimalno= 0;
                if (imaLeda[i])
                {
                    minimalno = 1; 
                }
            }
             

            for (int j = 0; j < M; j++)
            {
                if (j != i && kraj == a[j] && kraj!=0)
                {
                    kraj = b[j];
                    if (imaLeda[j] != imaLeda[br])
                    {
                        minimalno++;
                    }
                    br = j;
                }

                if (kraj == laza)
                {
                    pronadjeno= true;
                    break;
                }

            }
            if (pronadjeno && preminimalno>=minimalno)
              preminimalno= minimalno;
        }
        if(pronadjeno)
         Console.WriteLine(minimalno);
        else Console.WriteLine(-1);



    }
  }