#include <bits/stdc++.h>
using namespace std;
const long long M = 1e9 + 7;
const long long INF = 1e9;
inline long long pwr(long long base, long long n, long long m) {
  long long ans = 1;
  while (n > 0) {
    if (n % 2 == 1) ans = (ans * base) % m;
    base = (base * base) % m;
    n /= 2;
  }
  return ans;
}
int diff = 2e9, likings = 0, a, b, c;
vector<int> t[3];
int vis[10] = {0};
bool likes[10][10];
vector<string> heroes;
map<string, int> id;
void rec(int tt) {
  if (tt >= 3) return;
  if (t[tt].size() > 5) return;
  if (tt == 2 && t[0].size() + t[1].size() + t[2].size() == 7) {
    int s1 = t[0].size(), s2 = t[1].size(), s3 = t[2].size();
    int mn = min(min(a / s1, b / s2), c / s3);
    int mx = max(max(a / s1, b / s2), c / s3);
    if (mx - mn <= diff) {
      int cnt = 0;
      for (int j = 0; j < 3; j++) {
        int sz = t[j].size();
        for (int k = 0; k < sz; k++) {
          for (int k1 = 0; k1 < sz; k1++) {
            if (likes[t[j][k]][t[j][k1]]) cnt++;
          }
        }
      }
      if (mx - mn == diff)
        likings = max(likings, cnt);
      else {
        likings = cnt;
        diff = mx - mn;
      }
    }
    return;
  }
  if (t[0].size() + t[1].size() + t[2].size() == 7) return;
  for (int i = 0; i < 7; i++) {
    if (!vis[i]) {
      vis[i] = 1;
      t[tt].push_back(i);
      rec(tt);
      t[tt].pop_back();
      vis[i] = 0;
    }
  }
  if (!t[tt].empty()) rec(tt + 1);
}
int main() {
  ios_base::sync_with_stdio(false);
  cin.tie(NULL);
  memset(likes, false, sizeof(likes));
  heroes.push_back("Anka");
  heroes.push_back("Chapay");
  heroes.push_back("Cleo");
  heroes.push_back("Troll");
  heroes.push_back("Dracul");
  heroes.push_back("Snowy");
  heroes.push_back("Hexadecimal");
  int z = 0;
  for (auto i : heroes) id[i] = z++;
  string s1, s2, temp;
  int n;
  cin >> n;
  for (int i = 0; i < n; i++) {
    cin >> s1 >> temp >> s2;
    likes[id[s1]][id[s2]] = true;
  }
  cin >> a >> b >> c;
  rec(0);
  cout << diff << " " << likings;
  return 0;
}
