#include <bits/stdc++.h>
using namespace std;
map<string, int> mp;
bool adj[8][8];
int ans = 0;
void rec(int n, vector<int> v1, vector<int> v2, vector<int> v3, int a, int b,
         int c) {
  if (a < 0 || b < 0 || c < 0) return;
  if (n == 8 && a == 0 && b == 0 && c == 0) {
    int l = 0;
    for (int i = 0; i < v1.size(); i++) {
      for (int j = 0; j < v1.size(); j++) {
        if (i != j && adj[v1[i]][v1[j]]) l++;
      }
    }
    for (int i = 0; i < v2.size(); i++) {
      for (int j = 0; j < v2.size(); j++) {
        if (i != j && adj[v2[i]][v2[j]]) l++;
      }
    }
    for (int i = 0; i < v3.size(); i++) {
      for (int j = 0; j < v3.size(); j++) {
        if (i != j && adj[v3[i]][v3[j]]) l++;
      }
    }
    if (ans < l) ans = l;
    return;
  }
  if (n == 8) return;
  v1.push_back(n);
  rec(n + 1, v1, v2, v3, a - 1, b, c);
  v1.erase(v1.end() - 1);
  v2.push_back(n);
  rec(n + 1, v1, v2, v3, a, b - 1, c);
  v2.erase(v2.end() - 1);
  v3.push_back(n);
  rec(n + 1, v1, v2, v3, a, b, c - 1);
}
vector<int> a, b, c;
int main() {
  int n;
  mp["Anka"] = 1, mp["Dracul"] = 2, mp["Troll"] = 3, mp["Hexadecimal"] = 4,
  mp["Snowy"] = 5, mp["Cleo"] = 6, mp["Chapay"] = 7;
  cin >> n;
  getchar();
  for (int i = 0; i < n; i++) {
    char s[100];
    gets(s);
    int j = 0;
    string x = "", y = "";
    while (j < strlen(s)) {
      int k = j;
      string t = "";
      while (s[k] != ' ' && s[k] != '\0') t += s[k], k++;
      j = k + 1;
      if (t != "likes") {
        if (x == "")
          x = t;
        else
          y = t;
      }
    }
    adj[mp[x]][mp[y]] = 1;
  }
  int p, q, r;
  cin >> p >> q >> r;
  int up = INT_MAX;
  for (int i = 1; i <= 5; i++) {
    for (int j = 1; j <= 5; j++) {
      if (i + j <= 6) {
        int k = 7 - i - j;
        int d = p / i, e = q / j, f = r / k;
        int maxi = max(d, max(e, f)), mini = min(d, min(e, f));
        if (maxi - mini < up) {
          up = maxi - mini;
          a.clear(), b.clear(), c.clear();
          a.push_back(i), b.push_back(j), c.push_back(k);
        } else if (maxi - mini == up)
          a.push_back(i), b.push_back(j), c.push_back(k);
      }
    }
  }
  vector<int> v1, v2, v3;
  for (int i = 0; i < a.size(); i++) rec(1, v1, v2, v3, a[i], b[i], c[i]);
  cout << up << " " << ans << endl;
  ;
}
