#include <bits/stdc++.h>
const long long N = 100010;
const long long inf = 1e18;
using namespace std;
string str[7] = {"Dracul", "Troll", "Anka",  "Hexadecimal",
                 "Snowy",  "Cleo",  "Chapay"};
map<string, long long> hh;
long long dp[4][1 << 7], d[8][8][8], g[8][8], cnt[1 << 7];
long long work(long long x) {
  long long ret = 0;
  while (x) {
    if (x & 1) ret++;
    x >>= 1;
  }
  return ret;
}
int main() {
  for (long long i = 0; i < 7; i++) hh[str[i]] = i;
  long long n, a, b, c;
  cin >> n;
  for (long long i = 0; i < n; i++) {
    string a, b, c;
    cin >> a >> b >> c;
    g[hh[a]][hh[c]] = 1;
  }
  cin >> a >> b >> c;
  for (long long i = 0; i < 1 << 7; i++) cnt[i] = work(i);
  for (long long i = 0; i < 1 << 7; i++) {
    for (long long j = 0; j < 7; j++) {
      if (((1 << j) & i) == 0) continue;
      for (long long k = 0; k < 7; k++) {
        if (((1 << k) & i) == 0) continue;
        dp[0][i] += g[j][k];
      }
    }
  }
  long long ret1 = inf;
  memset(d, 0x3f, sizeof(d));
  for (long long i = 1; i < 8; i++)
    for (long long j = 1; j + i < 8; j++)
      for (long long k = 1; k + i + j < 8; k++) {
        if (i + j + k != 7) continue;
        long long mn = inf, mx = 0;
        mn = min(mn, a / i);
        mx = max(mx, a / i);
        mn = min(mn, b / j);
        mx = max(mx, b / j);
        mn = min(mn, c / k);
        mx = max(mx, c / k);
        d[i][j][k] = mx - mn;
        ret1 = min(ret1, mx - mn);
      }
  long long ret2 = 0;
  for (long long i = 0; i < 8; i++)
    for (long long j = 1; j + i < 8; j++)
      for (long long k = 1; k + i + j < 8; k++) {
        if (d[i][j][k] != ret1) continue;
        for (long long ii = 0; ii < 1 << 7; ii++) {
          if (cnt[ii] == i)
            dp[1][ii] = dp[0][ii];
          else
            dp[1][ii] = -inf;
          dp[2][ii] = dp[3][ii] = -inf;
        }
        for (long long kk = 1; kk < 3; kk++) {
          for (long long ii = 0; ii < 1 << 7; ii++) {
            if (dp[kk][ii] == -inf) continue;
            for (long long jj = 0; jj < 1 << 7; jj++) {
              if (kk == 1 && cnt[jj] != j) continue;
              if (kk == 2 && cnt[jj] != k) continue;
              if (ii & jj) continue;
              dp[kk + 1][ii | jj] =
                  max(dp[kk + 1][ii | jj], dp[kk][ii] + dp[0][jj]);
            }
          }
        }
        ret2 = max(ret2, dp[3][(1 << 7) - 1]);
      }
  cout << ret1 << " " << ret2 << endl;
  return 0;
}
