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

int main(){
    int N,M;
    cin>>N>>M;
    bool* prohodno=new bool[N*N];
    bool* sa_ledom=new bool[N*N];
    for(int i=0;i<N*N;i++)
        sa_ledom[i]=prohodno[i]=false;
    for(int i=0;i<M;i++){
        int a,b,c;
        cin>>a>>b>>c;
        a--;
        b--;
        prohodno[a+b*N]=true;
        prohodno[b+a*N]=true;
        sa_ledom[a+b*N]=(bool)c;
        sa_ledom[b+a*N]=(bool)c;
    }
    int p,k;
    cin>>p>>k;
    p--;
    k--;
    int izlaz=0;
    bool stanje=false;
    int prevTacka=-1;
    int tacka=p;
    int lookFrom=0;
    while(tacka!=k){
        bool pronadjenPut=false;
        int last=0;
        for(int i=lookFrom;i<N;i++)
            if(prohodno[tacka+N*i]) last=i;
        for(int i=lookFrom;i<N;i++){
            if(!prohodno[tacka+N*i]) continue;
            if(stanje==sa_ledom[tacka+N*i]){
                pronadjenPut=true;
                tacka=i;
                continue;
            }
            if(!pronadjenPut&&i==last){
                stanje=!stanje;
                izlaz++;
                tacka=last;
            }
        }
        if(!pronadjenPut){
            if(prevTacka!=-1){
                lookFrom=tacka;
                tacka=prevTacka;
            }else{
                izlaz=-1;
                break;
            }
        }
    }
    cout<<izlaz<<endl;
    return 0;
}