using System;
using System.Collections.Generic;

namespace Sante
{
    internal class Program
    {
        struct Put
        {
            public int a, b;
            public bool t;
        }

        static int Putanja(List<Put> putanje, int u, int v, bool stanje, int promene)
        {
            List<int> rezultati = new List<int>();
            for (int i = 0; i < putanje.Count; i++)
            {
                Put put = putanje[i];
                if (put.a == u)
                {
                    if (put.b == v) rezultati.Add(stanje != put.t ? promene + 1 : promene);
                    else
                    {
                        List<Put> list = new List<Put>(putanje);
                        list.RemoveAt(i);
                        rezultati.Add(Putanja(list, put.b, v, put.t, stanje != put.t ? promene + 1 : promene));
                    }
                }
            }
            int rastojanje = -1;
            foreach (int r in rezultati)
            {
                if (r > rastojanje && r != -1) rastojanje = r;
            }
            return rastojanje;
        }

        static void Main(string[] args)
        {
            string input = Console.ReadLine();
            int m = Convert.ToInt32(input.Split(' ')[1]);
            List<Put> putanje = new List<Put>();
            for (int i = 0; i < m; i++)
            {
                input = Console.ReadLine();
                string[] data = input.Split(' ');
                Put putanja = new Put();
                putanja.a = Convert.ToInt32(data[0]);
                putanja.b = Convert.ToInt32(data[1]);
                putanja.t = Convert.ToBoolean(Convert.ToInt32(data[2]));
                putanje.Add(putanja);
            }
            input = Console.ReadLine();
            int u = Convert.ToInt32(input.Split(' ')[0]);
            int v = Convert.ToInt32(input.Split(' ')[1]);
            Console.WriteLine(Putanja(putanje, u, v, false, 0));
        }
    }
}