#include <bits/stdc++.h>
#define en '\n'

using namespace std;

int n,m;
vector<vector<int>> adj1;
vector<vector<int>> adj2;
vector<bool> vis;
vector<int> d0,d1;
int x,y;

int main()
{
    ios::sync_with_stdio(0);
    cin.tie(0);
    cout.tie(0);

    cin >> n >> m;

    adj1.resize(n);
    adj2.resize(n);
    vis.resize(n);
    d0.resize(n);
    d1.resize(n);
    for(int i = 0; i < m; i++)
    {
        int u,v,t; cin >> u >> v >> t;
        u--;v--;
        if(t==0)
        {
            adj1[u].push_back(v);
            adj1[v].push_back(u);
        }
        else{
            adj2[u].push_back(v);
            adj2[v].push_back(u);
        }
    }
    cin>>x>>y;
    x--;y--;

    queue<int> q;
    q.push(x);
    d0[x]=0;
    d1[x]=1;
    while(!q.empty())
    {
        int v = q.front();
        q.pop();
        for(int u : adj1[v])
        {
            if(!vis[u])
            {
                vis[u]=1;
                d0[u]=d0[v];
                d1[u]=1+d0[u];
                q.push(u);
            }
        }
        for(int u : adj2[v])
        {
            if(!vis[u]){
                vis[u]=1;
                d1[u]=d1[v];
                d0[u]=1+d1[u];
                q.push(u);
            }
        }
    }
    cout << min(d0[y],d1[y]) << en;


}