#include <iostream>
#include <math.h>

using namespace std;

int main()
{
    int broj_santi=0, broj_puteva=0;
    cin >> broj_santi >> broj_puteva;
    int put[broj_santi][broj_santi];
    int najkraci_put[broj_santi];
    int min_broj = -1;

    for(int i = 0; i< broj_santi; i++){
        for(int j=0; j < broj_santi; j++){
            put[i][j] = -1;
        }
       
    }
 
    for(int i=0; i<broj_santi; i++){
        najkraci_put[i] = -1;
    }
    

    for(int i = 0; i < broj_puteva; i++){
        int santax=0,santay=0;
        cin >> santax >> santay >> put[santax-1][santay-1];
    }
    
    int mika=0,laza=0, mika1=0,laza1=0;
    cin >> mika1 >> laza1;
    mika = mika1-1;
    laza = laza1-1;
    

    int zaprljana_santa[broj_santi];
    for(int i = 0; i < broj_santi; i++){
        zaprljana_santa[i] = 0;
    }
    

    int korpa[broj_santi*broj_santi];
    int korpa_stanje[broj_santi*broj_santi];
    int vrh_korpe = 0;


    vrh_korpe = 0; 
    korpa[vrh_korpe] = mika; 
    zaprljana_santa[mika] = 1;
    najkraci_put[mika] = 0; 
    korpa_stanje[vrh_korpe] = 0; 
    int trenutno_stojimo_na = mika;
    int trenutno_stanje_masine = 0;
    do {
        
        
        trenutno_stojimo_na = korpa[vrh_korpe];
        trenutno_stanje_masine = korpa_stanje[vrh_korpe];
        zaprljana_santa[trenutno_stojimo_na] = 1;
        vrh_korpe--; 
        
        for(int i = 0; i < broj_santi; i++){

            int novi_put=-1;
            if(put[trenutno_stojimo_na][i] == 0 && zaprljana_santa[i] == 0){
                if(trenutno_stanje_masine == 0){
                    novi_put = najkraci_put[trenutno_stojimo_na]; 
                } else
                {
                    novi_put = najkraci_put[trenutno_stojimo_na] + 1;
                }
            }
            if(put[trenutno_stojimo_na][i] == 1 && zaprljana_santa[i] == 0){
                if(trenutno_stanje_masine == 0){
                    novi_put = najkraci_put[trenutno_stojimo_na] + 1; 
                } else
                {
                    novi_put = najkraci_put[trenutno_stojimo_na]; 
                }
                
            }
            
            
            if (novi_put != -1) {
                if( najkraci_put[i] > novi_put || najkraci_put[i] == -1){
                    najkraci_put[i] = novi_put;
                }
                    
            } 
            
           
            if (novi_put!=-1){
              
                vrh_korpe++;
                korpa[vrh_korpe]=i;
                korpa_stanje[vrh_korpe]=put[trenutno_stojimo_na][i];
            }
            
        }
        
        
       
    } while (vrh_korpe >= 0);
    
    min_broj = najkraci_put[laza];
    
    cout << min_broj;
    
    return 0;
}