#include <bits/stdc++.h>
using namespace std;
const int INF = 0x3f3f3f3f;
const int maxn = 1000 + 10;
set<int> zset;
string s[maxn];
struct Alsum {
  int sum, index;
} alsum[10];
vector<Alsum> sumvec;
struct cmp {
  bool operator()(const Alsum &a, const Alsum &b) const {
    return a.sum > b.sum;
  }
};
int ipow(int a, int b) {
  for (int i = 0; i < b; i++) a *= 10;
  a /= 10;
  return a;
}
int main() {
  int n, zero[10] = {0}, alcnt[10][6] = {0};
  scanf("%d", &n);
  for (int i = 0; i < n; i++) {
    cin >> s[i];
    zero[s[i][0] - 'a'] = 1;
    for (int j = s[i].size() - 1; j >= 0; j--) {
      alcnt[s[i][j] - 'a'][j + (6 - s[i].size())]++;
    }
  }
  for (int i = 0; i < 10; i++) {
    if (zero[i] == 0) {
      zset.insert(i);
    }
  }
  int ans = 0, cntnum = 1;
  for (int i = 0; i < 10; i++) {
    for (int j = 0; j < 6; j++) {
      alsum[i].sum += alcnt[i][j] * (int)ipow(10, 5 - j);
      alsum[i].index = i;
    }
    sumvec.push_back(alsum[i]);
  }
  sort(sumvec.begin(), sumvec.end(), cmp());
  for (int i = 0; i < 10; i++) {
    if (zset.count(sumvec[i].index)) {
      zset.clear();
      continue;
    }
    ans += sumvec[i].sum * cntnum++;
  }
  printf("%d\n", ans);
}
