using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;

class Program
{
    static void SanteLeda(List<int> a, List<int> b, List<int> c,int ma,int s,int kraj, List<int> d,int br,int m)
    {
        if(s!=kraj)
        {
            for (int i = 0; i < m; i++)
            {
                if(a[i]==s)
                {
                    if(ma==0 && c[i]==1)
                    {
 
                        SanteLeda(a, b, c, 1, b[i], kraj, d, br + 1,m);
                    }
                    else if(ma == 1 && c[i] == 0)
                    {
                        SanteLeda(a, b, c, 0, b[i], kraj, d, br + 1,m);
                    }
                    else
                    {
                        SanteLeda(a, b, c, ma, b[i], kraj, d, br,m);
                    }
                }
            }
        }
        else
        {
            d.Add(br);
        }
    }
    static void Main(string[] args)
    {
        var s1 = Console.ReadLine().Split();
        int n = int.Parse(s1[0]);
        int m = int.Parse(s1[1]);

        var s2 = Console.ReadLine().Split();
        List<int> a = new List<int>();
        List<int> b = new List<int>();
        List<int> c = new List<int>();
        a.Add(int.Parse(s2[0]));
        b.Add(int.Parse(s2[1]));
        c.Add(int.Parse(s2[2]));
        for (int i = 1; i < m; i++)
        {
            s2 = Console.ReadLine().Split();
            a.Add(int.Parse(s2[0]));
            b.Add(int.Parse(s2[1]));
            c.Add(int.Parse(s2[2]));
        }


        var s3 = Console.ReadLine().Split();
        int s = int.Parse(s3[0]);
        int kraj = int.Parse(s3[1]);

        List<int> d = new List<int>();

        SanteLeda(a, b, c, 0, s, kraj, d, 0, m);
        if(d.Count==0)
        {
            Console.WriteLine(-1);
        }
        else
        {
            Console.WriteLine(d.Min());
        }
    }
}