#include <bits/stdc++.h>
using namespace std;
bool v[8][8];
int mem[8];
bool mark[8];
int num[4];
int Min, Max;
int lmin, lmax;
int change(string a) {
  if (a == "Anka") return 1;
  if (a == "Chapay") return 2;
  if (a == "Cleo") return 3;
  if (a == "Troll") return 4;
  if (a == "Dracul") return 5;
  if (a == "Snowy") return 6;
  if (a == "Hexadecimal") return 7;
}
void check() {
  int i, j, cnt = 0;
  int vis[8];
  for (i = 1; i <= num[1]; i++) vis[mem[i]] = 1;
  for (; i <= num[1] + num[2]; i++) vis[mem[i]] = 2;
  for (; i <= 7; i++) vis[mem[i]] = 3;
  for (i = 1; i <= 7; i++) {
    for (j = 1; j <= 7; j++) {
      if (v[mem[i]][mem[j]] && vis[mem[i]] == vis[mem[j]]) cnt++;
    }
  }
  if (cnt > Max) {
    Max = cnt;
    lmin = Min;
    lmax = Max;
  }
}
void DFS(int n, int cnt) {
  if (cnt == 8) {
    check();
    return;
  }
  for (int i = 1; i <= 7; i++) {
    if (!mark[i]) {
      mark[i] = 1;
      mem[cnt] = i;
      DFS(n, cnt + 1);
      mark[i] = 0;
    }
  }
}
int main() {
  int n;
  int i, j, k;
  while (cin >> n) {
    for (i = 0; i < 8; i++) {
      for (j = 0; j < 8; j++) v[i][j] = 0;
    }
    Max = 0;
    string a, b, c;
    int t1, t2;
    for (i = 1; i <= n; i++) {
      cin >> a >> b >> c;
      t1 = change(a);
      t2 = change(c);
      v[t1][t2] = 1;
    }
    double evil[3];
    for (i = 0; i < 3; i++) cin >> evil[i];
    Min = 2000000000;
    for (i = 1; i <= 5; i++) {
      for (j = 1; j <= 5; j++) {
        if (i + j >= 7) break;
        k = 7 - i - j;
        double temp1 = evil[0] / i;
        double temp2 = evil[1] / j;
        double temp3 = evil[2] / k;
        if (temp1 > temp2) swap(temp1, temp2);
        if (temp1 > temp3) swap(temp1, temp3);
        if (temp2 > temp3) swap(temp2, temp3);
        if ((int)temp3 - (int)temp1 < Min) {
          Min = (int)temp3 - (int)temp1;
        }
      }
    }
    for (i = 1; i <= 5; i++) {
      for (j = 1; j <= 5; j++) {
        if (i + j >= 7) break;
        k = 7 - i - j;
        double temp1 = evil[0] / i;
        double temp2 = evil[1] / j;
        double temp3 = evil[2] / k;
        if (temp1 > temp2) swap(temp1, temp2);
        if (temp1 > temp3) swap(temp1, temp3);
        if (temp2 > temp3) swap(temp2, temp3);
        if ((int)temp3 - (int)temp1 == Min) {
          num[1] = i;
          num[2] = j;
          num[3] = k;
          DFS(n, 1);
        }
      }
    }
    cout << Min << " " << Max << endl;
  }
  return 0;
}
