#include <bits/stdc++.h>
using namespace std;
const int N = 2e5 + 7;
const int inf = 0x3f3f3f3f;
const long long INF = 0x3f3f3f3f3f3f3f3f;
const int mod = 1e9 + 7;
const double eps = 1e-8;
const double PI = acos(-1);
string s[N];
int depth[N], ch[N][26], cnt, n;
long long ans;
bool val[N];
multiset<int> Set[N];
void Insert(const string& s) {
  int u = 0;
  for (int i = 0; i < ((int)s.size()); i++) {
    if (!ch[u][s[i] - 'a']) {
      ch[u][s[i] - 'a'] = ++cnt;
      depth[cnt] = depth[u] + 1;
    }
    u = ch[u][s[i] - 'a'];
  }
  val[u] = true;
}
void dfs(int u) {
  for (int i = 0; i < 26; i++) {
    int v = ch[u][i];
    if (v) {
      dfs(ch[u][i]);
      if (((int)Set[u].size()) < ((int)Set[v].size())) Set[u].swap(Set[v]);
      for (auto& x : Set[v]) Set[u].insert(x);
    }
  }
  if (u) {
    if (val[u])
      Set[u].insert(depth[u]);
    else {
      if (((int)Set[u].size())) {
        int val = *Set[u].rbegin();
        Set[u].erase(Set[u].lower_bound(val));
        Set[u].insert(depth[u]);
      }
    }
  }
}
int main() {
  cin >> n;
  for (int i = 1; i <= n; i++) cin >> s[i];
  for (int i = 1; i <= n; i++) Insert(s[i]);
  dfs(0);
  for (auto& x : Set[0]) ans += x;
  printf("%lld\n", ans);
  return 0;
}
