#include <bits/stdc++.h>
using namespace std;
long long n, m, c, p, y, k, x, h, t, q;
string s;
vector<long long> v;
map<long long, long long> ma;
void input() {}
struct node {
  map<string, node*> child;
  map<string, long long> ispresent;
  string name;
  bool isfile = 0;
};
pair<long long, long long> dfs(node* root) {
  pair<long long, long long> p = {0, 0};
  if (root->isfile == 1) {
    p = {0, 1};
    return p;
  }
  pair<long long, long long> res = {0, 0};
  for (auto i : root->child) {
    p = dfs(i.second);
    res.first += p.first;
    res.second += p.second;
  }
  res.first++;
  return res;
}
void solve() {
  string s;
  map<char, node*> roots;
  roots['C'] = new node();
  roots['D'] = new node();
  roots['E'] = new node();
  roots['F'] = new node();
  roots['G'] = new node();
  while (cin >> s) {
    long long n = s.size();
    char disk = s[0];
    node* temp = roots[disk];
    for (long long i = 3; i < n; i++) {
      long long j;
      string names = "";
      bool file = 0;
      for (j = i; s[j] != '\\' && j < n; j++) {
        names += s[j];
        if (s[j] == '.') file = 1;
      }
      i = j;
      if (temp->ispresent[names] != 0) {
        temp = temp->child[names];
      } else {
        node* newnode = new node();
        if (file == 1) {
          newnode->isfile = true;
        }
        newnode->name = names;
        temp->child[names] = newnode;
        temp->ispresent[names]++;
        temp = temp->child[names];
      }
    }
  }
  long long maxfiles = 0;
  long long maxfolder = 0;
  for (auto i : roots['C']->child) {
    pair<long long, long long> p = dfs(i.second);
    maxfolder = max(maxfolder, p.first);
    maxfiles = max(maxfiles, p.second);
  }
  for (auto i : roots['D']->child) {
    pair<long long, long long> p = dfs(i.second);
    maxfolder = max(maxfolder, p.first);
    maxfiles = max(maxfiles, p.second);
  }
  for (auto i : roots['E']->child) {
    pair<long long, long long> p = dfs(i.second);
    maxfolder = max(maxfolder, p.first);
    maxfiles = max(maxfiles, p.second);
  }
  for (auto i : roots['F']->child) {
    pair<long long, long long> p = dfs(i.second);
    maxfolder = max(maxfolder, p.first);
    maxfiles = max(maxfiles, p.second);
  }
  for (auto i : roots['G']->child) {
    pair<long long, long long> p = dfs(i.second);
    maxfolder = max(maxfolder, p.first);
    maxfiles = max(maxfiles, p.second);
  }
  cout << maxfolder - 1 << " " << maxfiles;
}
signed main() {
  ios_base::sync_with_stdio(false);
  cin.tie(0);
  cout.tie(0);
  long long T = 1;
  while (T--) {
    input();
    solve();
  }
}
