#include <set>
#include <map>
#include <list>
#include <queue>
#include <stack>
#include <cmath>
#include <ctype.h>
#include <ctime>
#include <cstdio>
#include <vector>
#include <string>
#include <bitset>
#include <cctype>
#include <cstdlib>
#include <cstring>
#include <utility>
#include <numeric>
#include <complex>
#include <sstream>
#include <fstream>
#include <iomanip>
#include <cassert>
#include <iostream>
#include <iterator>
#include <algorithm>

using namespace std;

//4方向ベクトル→↑←↓
int dx[] ={1,0,-1,0};
int dy[] ={0,-1,0,1};
int X1,X2;
int Y1,Y2;
int a1,b1,c1,d1;
int n;//町の総数
int m;//街道の総数
int cost[21][21];//町iから町jへの交通費
const int INF = 1000000;
void warshall_floyd(){
  for(int i = 1;i <=n;i++){
    for(int j = 1;j <=n;j++){
      for(int k = 1;k <=n;k++){
	cost[j][k] =min(cost[j][k],cost[j][i]+cost[i][k]);
      }
    }
  }
}

int main()
{
  cin >>n;
  cin>>m;
  for(int i = 1;i <=n;i++){
    for(int j =1;j <=n;j++){
      if(i!=j)
	cost[i][j] =INF;
      else
	cost[i][j] = 0;
    }
  }
  for(int i = 0;i < m;i++){
    scanf("%d,%d,%d,%d\n",&a1,&b1,&c1,&d1);
    cost[a1][b1] =c1;
    cost[b1][a1] =d1;
  }
  warshall_floyd();
  scanf("%d,%d,%d,%d",&X1,&X2,&Y1,&Y2);
  cout<<Y1-(Y2+cost[X1][X2]+cost[X2][X1])<<endl;
  return 0;
}