#include<iostream>
#include<vector>
#include<limits>
#include<stack>
using namespace std;

int main(){
std::ios_base::sync_with_stdio(false);
cin.tie(NULL);
unsigned int n,m,i,s,c;
cin>>n>>m;
vector<vector<pair<int,int>>> a(n);
for(i=0;i<m;i++){
    int x,y,z;
    cin>>x>>y>>z;
    x--;y--;
    a[x].push_back(make_pair(y,z));
    a[y].push_back(make_pair(x,z));
}
cin>>s>>c;
s--;c--;
vector<int> daljine(n,-1);
vector<bool> poseceni(n,false);
vector<int> pocetni(n,0);
stack<int> stek;
daljine[s]=0;
stek.push(s);
poseceni[s]=true;
while(!stek.empty()){
    unsigned k=stek.top();
    stek.pop();
    for(auto x:a[k]){
        if(!poseceni[x.first]){
            poseceni[x.first]=true;
            stek.push(x.first);
            if(x.second!=pocetni[k]){
                daljine[x.first]=daljine[k]+1;
                if(pocetni[k]==1)pocetni[x.first]--;
                else pocetni[x.first]++;
            }
            else{
                daljine[x.first]=daljine[k];
            }
        }
        else if(daljine[x.first]>daljine[k]){
            if(x.second!=pocetni[k]){
                daljine[x.first]=daljine[k]+1;
                if(pocetni[k]==1)pocetni[x.first]--;
                else pocetni[x.first]++;
            }
            else{
                daljine[x.first]=daljine[k];
            }
        }
    }
}
cout<<daljine[c];
}