#include <bits/stdc++.h>
using namespace std;
int n,m,a,b,c,mini,mika,laza,resenje=1e9,znak;
bool uspeh,bio[200007];
struct slog{
  int prvi,drugi;
  int t;
}sl;
vector <slog> v[200007];
void dfs(int x,int br,int znak){
  if(x==laza){
     uspeh=true;
     resenje=min(resenje,br);
     return;
  }
  for(int i=0;i<v[x].size();i++){
      if(bio[v[x][i].drugi])continue;
      bio[v[x][i].drugi]=true;
      if(v[x][i].t==znak)dfs(v[x][i].drugi,br,znak);
      else{
        if(znak==1)dfs(v[x][i].drugi,br+1,znak-1);
        else dfs(v[x][i].drugi,br+1,znak+1);
      }
      bio[v[x][i].drugi]=false;
  }
}
int main(){
  cin>>n>>m;
  while(m--){
    scanf("%d %d %d",&a,&b,&c);
    sl.prvi=a;
    sl.drugi=b;
    sl.t=c;
    v[a].push_back(sl);
    //v[b].push_back(sl);
    //for(int i=0;i<v[a].size();i++)cout<<v[a][i].drugi<<endl;
    //cout<<endl;
  }
  cin>>mika>>laza;
  uspeh=false;
  bio[mika]=true;
  dfs(mika,0,0);
  if(uspeh==false)cout<<-1<<endl;
  else cout<<resenje<<endl;
  return 0;
}