#include<bits/stdc++.h>
using namespace std;
bool visited[1000000];
int n;
vector<pair<int,int>> g[1000000];
int duzina[1000000];
int stanje[1000000];
void dfs(int x, int anc, int edg){
	if(visited[x]) return;
	else visited[x] = true;
	if(edg==0){
		if(stanje[anc]==0){
			duzina[x] = duzina[anc];
			stanje[x] = stanje[anc];
		}
		if(stanje[anc]==1){
			duzina[x] = duzina[anc]+1;
			stanje[x] = 0; 
		}
	}
	else{
		if(stanje[anc]==1){
			duzina[x] = duzina[anc];
			stanje[x] = stanje[anc];
		}
		if(stanje[anc]==0){
			duzina[x] = duzina[anc]+1;
			stanje[x] = 1; 
		}
	}
	for(auto u:g[x]){
		dfs(u.first, x, u.second);
	}
}
int main(){
	int m;
	cin>>n>>m;
	bool st2 = true;
	for(int i=0;i<m;i++){
		int a,b,t;
		cin>>a>>b>>t;
		if(t==0) st2 = false;
		g[a].push_back({b,t});
		g[b].push_back({a,t});
	}
	int u,v;
	cin>>u>>v;
	duzina[u] = 0;
	stanje[u] = 0;
	if(st2){
		dfs(u,u,0);
		if(visited[v]) cout<<1<<endl;
		else cout<<-1<<endl;
		return 0;
	}
	if(m==n-1){
		dfs(u,u,0);
		cout<<duzina[v];
	}
}