#include<bits/stdc++.h>
using namespace std;
const int N=20101,INF=0x3f3f3f3f;
int from[N],to[N],w[N],idx,n,m,s,dis[N],t;
void add(int a,int b,int c){
from[++idx]=a;
to[idx]=b;
w[idx]=c;
dis[a]=idx;
}
bool bel(){
for(int i=1;i<=n;i++){
dis[i]=INF;
}
dis[s]=0;
for(int i=1;i<=n-1;i++){
for(int j=1;j<=m*2;j++){
int u=from[j],v=to[j],we=w[j];
if(dis[v]>dis[u]+we)
dis[v]=dis[u]+we;
}
}
}
int main()
{
cin>>n>>m>>s>>t;
for(int i=1;i<=m;i++){
int a,b,c;
cin>>a>>b>>c;
add(a,b,c);
add(b,a,c);
}
bel();
if(dis[t]==INF)
cout<<-1;
else
{
cout<<dis[t]<<endl;
}
return 0;
}