#include <bits/stdc++.h>
using namespace std;

const int INF = 1001001001;
int K[25][25];

template<class T> inline bool chmin(T& a, T b){if(a > b){a = b;return true;} return false;} //aをより小さい値にする関数

int main(){
    int n, m;
    scanf("%d%d", &n, &m);
    for(int i = 0; i < n; i++){ //ワーシャルフロイド用に初期化
        for(int j = 0; j < n; j++){
            if(i == j) K[i][j] = 0;
            else K[i][j] = INF;
        }
    }
    for(int i = 0; i < m; i++){
        int a, b, c, d;
        scanf("%d,%d,%d,%d", &a, &b, &c, &d);
        a--; b--; // 0-indexed
        K[a][b] = c; //aからbはコストc
        K[b][a] = d; //bからaはコストd
    }
    int s, g, V, P;
    scanf("%d,%d,%d,%d", &s, &g, &V, &P);
    s--; g--;
    for(int k = 0; k < n; k++){ //kは経由地点
        for(int i = 0; i < n; i++){ //iは始点
            for(int j = 0; j < n; j++){ //jは終点
                chmin(K[i][j], K[i][k] + K[k][j]);
            }
        }
    }
    int cost = K[s][g] + K[g][s] + P; //かかったお金は移動費と木材費
    cout << V - cost << endl;
}
