#include <bits/stdc++.h>
using namespace std;

typedef pair<int, int> pi;

const int INF = 200020;
int dist[INF];
int visited[INF];
int states[INF] = {-1};
vector<pi> graf[INF]; //prvo ide indeks cvora, pa tip puta

int main()
{
    int n,m, s, c; // n je broj cvorova dok je m broj grana
    cin >> n >> m;

    for (int i = 0; i < m; i++){
        int a, b, t;
        cin >> a >> b >> t;
        graf[a].push_back({b,t});
        graf[b].push_back({a,t});
    }

    cin >> s >> c;
    for (int i = 1; i <= n; i++){
        if(i == s){
            dist[i] = 0;
            states[i] = 0;
        }
        else{
            dist[i] = 200020;
            states[i] = -1;
        }
    }

    for (int i = 0; i < n; i++){
        int mini = -1;
        for (int j = 1; j <= n; j++){
            if(!visited[j] && (mini == -1 || dist[j] < dist[mini])){
                mini = j;
            }
        }
        visited[mini] = true;

        if (dist[mini] >= 200020 || m == 0){
            cout << -1 << endl;
            break;
        }
        if(visited[c]) {
            cout << dist[c] << endl;
            break;
        }

        for(auto u : graf[mini]){
            int v = u.first;
            if(!visited[v]){
                int stanje = u.second;

                int w = 0;
                if(stanje != states[mini])
                   w = 1;

                if(dist[mini] + w < dist[v]){
                    dist[v] = dist[mini] + w;
                    states[v] = stanje;
                }
            }

        }

    }




    return 0;
}