#include <iostream>

using namespace std;

const int INF = 2000;

int main()
{
    int N;
    int M;
    cin>>N;
    cin>>M;
    int a,b,t;
    int d[N];
    int gotov[N];
    int mat[N][N];
    bool ukljucena[N];
    for(int i=0; i<N; i++){
        for(int j=0; j<N; j++){
            mat[i][j]=INF;
        }
        d[i]=INF;
        ukljucena[i]=false;
        gotov[i]=false;
    }
    for(int i=0; i<M; i++){
        cin>>a;
        cin>>b;
        cin>>t;
     mat[a][b]=t;
     mat[b][a]=t;
    }
    cin>>a;
    cin>>b;
    d[a]=0;
    for(int i=0; i<N; i++){
        if(mat[a][i]==0){
            d[i]=0;
        }
        if(mat[a][i]==1){
            mat[a][i]=1;
            ukljucena[i]=true;
        }
    }
    gotov[a]=true;

     while(true){
        int mali = INF;
        int indx = -22;
        for(int i = 0; i<N; i++){
            if(!gotov[i]&&d[i]<mali){
                mali = d[i];
                indx = i;
            }
        }
        if(indx==-22){
            break;
        }

        for(int i = 0; i<N; i++){
            if(mat[indx][i]!=INF){
                    int pomoc;
                    if(ukljucena[indx]==true && mat[indx][i]==1){
                        pomoc=0;
                    }
                    else{
                        if(ukljucena[indx]==true && mat[indx][i]==0){
                            pomoc=1;
                        }
                        else{
                            if(ukljucena[indx]==false && mat[indx][i]==0){
                                pomoc=0;
                            }
                            else{
                                if(ukljucena[indx]=false && mat[indx][i]==1){
                                    pomoc=1;
                                }
                            }
                        }
                    }
            if(d[i]>d[indx]+pomoc){
                d[i]=d[indx]+pomoc;
                if(pomoc==1){
                    ukljucena[i]=!ukljucena[i];
                }

            }
            }
        }
        gotov[indx] = true;
    }
    if(d[b]==INF){
        cout<<"-1";
    }
    else{
        cout<<d[b];
    }


    return 0;
}