/*
* 模板題
*/
#include <bits/stdc++.h>
using namespace std;
const int MAXN = 2e2 + 10;
const int MAXM = 2e3 + 10;
const int INF = 0x3f3f3f3f;
int n, m, s, e;
int F[MAXN][MAXN];
int main(){
ios::sync_with_stdio(false);
cin.tie(0);
cout.tie(0);
//cout << setiosflags(ios::fixed) << setprecision(1); //保留小數點後1位
//cout << setprecision(1); //保留1位有效數字
// freopen("in.txt", "r", stdin);
// freopen("out.txt", "w", stdout);
while(cin >> n >> m){
memset(F, INF, sizeof F);
for(int i = 0; i <= n; ++i) F[i][i] = 0;
for(int i = 1; i <= m; ++i){
int u, v, w;
cin >> u >> v >> w;
F[u][v] = F[v][u] = min(F[v][u], w);
}
cin >> s >> e;
for(int k = 0; k < n; ++k)
for(int i = 0; i < n; ++i)
for(int j = 0; j < n; ++j)
F[i][j] = min(F[i][j], F[i][k] + F[k][j]);
if(F[s][e] == INF) cout << -1 << endl;
else cout << F[s][e] << endl;
}
return 0;
}