#include <bits/stdc++.h>
using namespace std;
struct data_p {
  int id;
  long long num;
} pot[1000005];
long long a[15], tmp, ansl = 1e9 + 7;
int n, top, ans, now, f[1000005];
bool cmp(data_p x, data_p y) { return x.num < y.num; }
int main() {
  for (int i = 1; i <= 6; i++) scanf("%lld", &a[i]);
  scanf("%d", &n);
  for (int i = 1; i <= n; i++) {
    scanf("%lld", &tmp);
    for (int j = 1; j <= 6; j++) {
      pot[++top].id = i;
      pot[top].num = tmp - a[j];
    }
  }
  sort(pot + 1, pot + top + 1, cmp);
  for (int i = 1; i <= top; i++) {
    while (ans < n && now < top) {
      now++;
      if (!f[pot[now].id]) ans++;
      f[pot[now].id]++;
    }
    if (ans < n) break;
    ansl = min(ansl, pot[now].num - pot[i].num);
    f[pot[i].id]--;
    if (!f[pot[i].id]) ans--;
  }
  printf("%lld", ansl);
  return 0;
}
