#include <bits/stdc++.h>
using namespace std;
const int MXN = 200;
const int MXK = 5;
int bans = -1;
int t[MXN][MXK];
int a[MXK];
int n;
int c[MXK];
int cc[] = {500, 1000, 1500, 2000, 2500, 3000};
int cat(int c, int n) {
  if (c * 2 > n) {
    return 0;
  }
  if (c * 4 > n && c * 2 <= n) {
    return 1;
  }
  if (c * 8 > n && c * 4 <= n) {
    return 2;
  }
  if (c * 16 > n && c * 8 <= n) {
    return 3;
  }
  if (c * 32 > n && c * 16 <= n) {
    return 4;
  }
  if (c * 32 <= n) {
    return 5;
  }
}
int calc(int i) {
  int res = 0;
  for (int j = (0); j < (MXK); j++) {
    if (t[i][j] != -1) res += cc[a[j]] - t[i][j] * cc[a[j]] / 250;
  }
  return res;
}
bool ok(int c, int n, int tt, int j) {
  return cat(c + tt * (t[0][j] != -1), n + tt) <= a[j] &&
         cat(c, n + tt) >= a[j];
}
int T;
void dfs(int i) {
  if (i == MXK) {
    int mn = 0;
    for (int j = (0); j < (MXK); j++) {
      if (!ok(c[j], n, T, j)) return;
    }
    if (calc(0) > calc(1)) {
      printf("%d", T);
      exit(0);
    }
    return;
  }
  for (int j = (0); j < (6); j++) {
    a[i] = j;
    dfs(i + 1);
  }
}
int main() {
  scanf("%d", &n);
  for (int i = (0); i < (n); i++) {
    for (int j = (0); j < (5); j++) {
      scanf("%d", &t[i][j]);
      if (t[i][j] != -1) {
        c[j]++;
      }
    }
  }
  for (int i = (0); i < (n * 31 + 1); i++) {
    T = i;
    dfs(0);
  }
  cout << bans;
}
