#include <iostream>

using namespace std;

int main()
{
    int n, m;
    cin>>n>>m;
    int mat[n+1][n+1];
    int bejar[n+1][n+1];
    for(int i=0;i<n+1;i++)
        for(int j=0;j<n+1;j++)
        {
            mat[i][j]=-1;
            bejar[i][j]=-1;
        }
    int x, y, z;
    for(int i=0;i<m;i++)
    {
        cin>>x>>y>>z;
        mat[x][y]=z;
        mat[y][x]=z;
    }
    int kezd, cel;
    cin>>kezd>>cel;

    bool kibe[n+1];
    int minert[n+1];
    int kesz=1;
    kibe[kezd]=false;
    minert[kezd]=0;
    bejar[kezd][kezd]=0;
    int eztv=kezd;
    for(int i=1;i<n+1;i++)
        mat[i][kezd]=-1;
    for(int i=kesz+1;i<n+1;i++)
        bejar[i][eztv]=-2;
    while(kesz<n)
    {
        for(int i=1;i<n+1;i++)
        {
            if(mat[eztv][i]!=-1 && bejar[kesz][i]!=-2)
            {
                int seged;
                bool skibe;
                if(mat[eztv][i]==kibe[eztv])
                {
                    seged=bejar[kesz][eztv];
                    skibe=kibe[eztv];
                }
                else
                {
                    seged=bejar[kesz][eztv]+1;
                    skibe=!kibe[eztv];
                }
                if(seged<bejar[kesz-1][i] || bejar[kesz-1][i]==-1)
                {
                    bejar[kesz][i]=seged;
                    kibe[i]=skibe;
                }
                else if(bejar[kesz-1][i]!=-1 && bejar[kesz][i]!=-2)
                    bejar[kesz][i]=bejar[kesz-1][i];
            }
            else if(bejar[kesz-1][i]!=-1 && bejar[kesz][i]!=-2)
                bejar[kesz][i]=bejar[kesz-1][i];
        }
        int mini=n*n*10;
        int minih=-1;
        for(int i=1;i<n+1;i++)
            if(bejar[kesz][i]<mini && i!=eztv && bejar[kesz][i]>=0)
            {
                mini=bejar[kesz][i];
                minih=i;
            }

        kesz++;
        eztv=minih;
        minert[minih]=mini;
        bejar[kesz][eztv]=mini;
        for(int i=kesz+1;i<n+1;i++)
            bejar[i][eztv]=-2;
        if(minih==cel)
        {
            cout<<mini;
            return 0;
        }
    }
    return 0;
}