#include <bits/stdc++.h>
using namespace std;   
typedef unsigned long long ull;

int put(bool on, vector<vector<pair<int,bool>>>& nb, int u, int v, vector<bool> vis){
    if(u==v){
        return 0;
    }
    vis[u]=true;
    int best=2e5+1;
    for(auto par : nb[u]){
        if(!vis[par.first]){
            vis[par.first]=true;
            if(on==par.second){
                best=min(best,put(on,nb,par.first,v,vis));
            }
            else best=min(best,1+put(!on,nb,par.first,v,vis));
            vis[par.first]=false;
        }
    }
    return best;
}

int main()
{
    int n,m; cin >> n >> m;
    vector<vector<pair<int,bool>>> nb(n);
    for(int i=0; i<m; i++){
        int a,b,t; cin >> a >> b >> t;
        a--; b--;
        bool x=!(t==0);
        nb[a].push_back({b,x});
        nb[b].push_back({a,x});
    }
    int u, v; cin >> u >> v;
    u--;v--;
    bool on=false;
    vector<bool> vis(n,false);
    vis[0]=true;
    int k=put(on,nb,u,v,vis);
    if(k>2e5 || k<0) cout << -1 << '\n';
    else cout << k << '\n';
    return 0;
}