using System;

namespace Sante
{
    class Program
    {
        static int Put(int u, int v, bool masina, int[,] memo)
        {
            if (u == v) return 0;
            bool neprohodni = true;
            for (int i = 0; i < memo.GetLength(0); i++)
            {
                if (memo[i, 1] == memo[i, 0]) neprohodni = false;
            }
            if (neprohodni) return -1;
            for (int i = 0; i < memo.GetLength(0); i++)
            {
                if (memo[i, 0] == u)
                {
                    if (masina != Convert.ToBoolean(memo[i,2]))
                    {
                        return 1 + Put(memo[i, 1], v, Convert.ToBoolean(memo[i, 2]), memo);
                    }
                    else return  Put(memo[i, 1], v, Convert.ToBoolean(memo[i, 2]), memo);
                }
                else if (memo[i, 1] == u)
                {
                    if (masina != Convert.ToBoolean(memo[i, 2]))
                    {
                        return 1 + Put(memo[i, 0], v, Convert.ToBoolean(memo[i, 2]), memo);
                    }
                    else return Put(memo[i, 1], v, Convert.ToBoolean(memo[i, 2]), memo);
                }
            }
            return -1;
        }
        static void Main(string[] args)
        {
            string[] b = Console.ReadLine().Split(' ');
            int N = int.Parse(b[0]);
            int M = int.Parse(b[1]);
            

            int[,] memo = new int[M, 3];
            for (int i = 0; i < M; i++)
            {
                string[] c = Console.ReadLine().Split(' ');
                memo[i, 0] = int.Parse(c[0]);
                memo[i, 1] = int.Parse(c[1]);
                memo[i, 2] = int.Parse(c[2]);
            }

            string[] a = Console.ReadLine().Split(' ');
            int u = int.Parse(a[0]);
            int v = int.Parse(a[1]);

            Console.WriteLine(Put(u, v, false, memo));
        }
    }
}