#include <iostream>
#include <cstdio>
using namespace std;

int n;
int dst[100][100];

int v[100];
int c[100];
int M = 1001001001;


int dijkstra(int a){
	for(int i=0; i<100; i++){
		v[i] = M;
		c[i] = 0;
	}
	int t[100];
	t[0] = a;
	v[a] = 0;
	int ns = 0, nn = 1;
	while(nn>0){
		int mn = M;
		int mnx = 0;
		for(int i=ns; i<ns+nn; i++){
			if(v[t[i]]<mn){
				mn = v[t[i]];
				mnx = i;
			}
		}
		int tmp = t[ns];
		t[ns] = t[mnx];
		t[mnx] = tmp;
		int x = t[ns];
		ns++;
		nn--;

		c[x] = 1;
		for(int i=0; i<n; i++){
			if(dst[x][i]<M && c[i]==0){
				if(v[x]+dst[x][i] < v[i]){
					v[i] = v[x]+dst[x][i];
					t[ns+nn] = i;
					nn++;
				}
			}
		}


	}
}

int main(){
	int m;
	cin >> n >> m;

	for(int i=0; i<n; i++){
		for(int j=0; j<n; j++){
			dst[i][j] = M;
		}
	}

	for(int i=0; i<m; i++){
		int a, b, c, d;
		scanf("%d,%d,%d,%d", &a, &b, &c, &d);
		dst[a-1][b-1] = c;
		dst[b-1][a-1] = d;
	}
	int x1, x2, y1, y2;
	scanf("%d,%d,%d,%d", &x1, &x2, &y1, &y2);
	int ans = 0;
	dijkstra(x1-1);
	ans += v[x2-1];
	dijkstra(x2-1);
	ans += v[x1-1];
	cout << y1 - y2 - ans << endl;
	return 0;
}