#include <bits/stdc++.h>
using namespace std;
int n, x, y;
char ch[20];
namespace trie {
const int N = 1e6 + 9;
int ch[N][26], ans[N], mxdep = 0, pool;
int merge(int x, int y, int dep) {
  if (!x || !y) return x + y;
  int id = ++pool;
  ans[dep]++;
  for (int i = 0; i < 26; i++) {
    ch[id][i] = merge(ch[x][i], ch[y][i], dep);
  }
  return id;
}
void dfs(int u, int dep) {
  if (dep > mxdep) mxdep = dep;
  int root = 0;
  for (int i = 0; i < 26; i++) {
    if (ch[u][i]) {
      root = merge(root, ch[u][i], dep);
    }
  }
  if (root) ans[dep]++;
  for (int i = 0; i < 26; i++) {
    if (ch[u][i]) {
      dfs(ch[u][i], dep + 1);
    }
  }
  return;
}
};  // namespace trie
int main() {
  scanf("%d", &n);
  for (int i = 1; i < n; i++) {
    scanf("%d%d%s", &x, &y, ch);
    trie::ch[x][ch[0] - 'a'] = y;
  }
  trie::pool = n;
  trie::dfs(1, 1);
  int pos = max_element(trie::ans + 1, trie::ans + trie::mxdep + 1) - trie::ans;
  printf("%d\n%d\n", n - trie::ans[pos], pos);
}
