#include <bits/stdc++.h>

using namespace std;

struct put{
    int kraj;
    int led;
};

void dfs(int& k,int rastojanje,int i,
         int v,int z,vector<bool>& cvorovi,
         vector<vector<put>>& veze,
         vector<int>& rastojanja){

    if(cvorovi[i]) return;
    cvorovi[i] = true;

    if(i == v) {
        k++;
        rastojanje = 0;
        return;
    }

    rastojanja[k] = rastojanje;

    for(const put& p : veze[i]){
        if(z != p.led) rastojanje++;
        dfs(k,rastojanje,p.kraj,v,p.led,cvorovi,veze,rastojanja);
    }
}

int povezani(int i,int v,vector<vector<put>>& veze,int br){
    vector<bool> cvorovi(br,false);
    vector<int> rastojanja(br);
    int k = 0,m = 0,mn = 200001;
    dfs(k,0,i,v,-1,cvorovi,veze,rastojanja);
    for(int l = 0;l < k;l++){
        if(rastojanja[l] < mn){
            mn = rastojanja[l];
        }
    }
    if(mn == 200001) return -1;
    else return mn;
}

int main()
{
    ios_base::sync_with_stdio(0);
    cin.tie(0);

    int n,m;
    cin >> n >> m;
    vector<vector<put>> graph(n);

    int a,b,t;

    for(int i = 0;i < m;i++){
        cin >> a >> b >> t;

        graph[a].push_back({b,t});
    }

    int i,v;
    cin >> i >> v;

    cout << povezani(i,v,graph,n);
}