#include <iostream>
#include <map>
using namespace std;

struct santa
{
    int a;
    int ciklus;
    bool kraj = true;
    bool prosao = false;
    map<int, int> putevi;
};

int putovanje(int& br, int tr, santa sve_sante[], int trenutna_santa, bool masina, int laza, int& ciklus, int mika)
{
    if (sve_sante[trenutna_santa].a == laza)
    {
        return tr;
    }
    else if(!sve_sante[trenutna_santa].kraj &&
            (sve_sante[trenutna_santa].prosao && sve_sante[trenutna_santa].ciklus != ciklus || !sve_sante[trenutna_santa].prosao))
    {
        sve_sante[trenutna_santa].prosao = true;

        for (auto x : sve_sante[trenutna_santa].putevi)
        {
            //cout << trenutna_santa << endl;
            if (trenutna_santa == mika)
            {
                ciklus += 1;
            }
            sve_sante[trenutna_santa].ciklus = ciklus;
            if(masina == true && x.second == 0)
            {
                masina = false;
                tr++;
            }
            else if (masina == false && x.second == 1)
            {
                masina = true;
                tr++;
            }
            int p = putovanje(br, tr, sve_sante, x.first, masina, laza, ciklus, mika);
            if (p != -1)
            {
                br = min(br, p);
            }
        }
    }
    else
    {
        return -1;
    }
}

int main()
{
    int n, m;
    cin >> n >> m;
    santa sante[n+1];
    for(int i = 0; i < m; i++)
    {
        int a, b, t;
        cin >> a >> b >> t;
        sante[a].kraj = false;
        sante[a].a = a;
        sante[a].putevi.insert({b, t});
        sante[b].a = b;
        sante[b].putevi.insert({a, t});
    }
    int mika, laza;
    cin >> mika >> laza;
    int ciklus = 0;
    int br = 1000000;
    putovanje(br, 0, sante, mika, false, laza, ciklus, mika);
    cout << br;
    return 0;
}