#include <bits/stdc++.h>
using namespace std;
#define int long long
const int INF = 1e18;
const int N = 3e3 + 5;
int dis[N][N];
signed main(){
ios_base::sync_with_stdio(0);
cin.tie(0);
cout.tie(0);
int n, m;
cin >> n >> m;
int u, v, s, t;
cin >> s >> t >> u >> v;
for(int i = 0; i < N; i++){
for(int j = 0; j < N; j++){
if(i != j)
dis[i][j] = INF;
}
}
for(int i = 1; i <= m; i++){
int U, V, W;
cin >> U >> V >> W;
dis[U][V] = dis[V][U] = W;
}
for(int k = 1; k <= n; k++){
for(int a = 1; a <= n; a++){
for(int b = 1; b <= n; b++){
if(dis[a][k] != INF && dis[k][b] != INF)
dis[a][b] = min(dis[a][b], dis[a][k] + dis[k][b]);
}
}
}
int mn = dis[u][v];
for(int a = 1; a <= n; a++){
for(int b = 1; b <= n; b++){
if(dis[s][a] + dis[a][b] + dis[b][t] == dis[s][t]){
mn = min({mn, dis[u][a] + dis[b][v], dis[u][b] + dis[a][v]});
}
}
}
cout << mn << endl;
}