#include <bits/stdc++.h>
using namespace std;
const int N = 1e5 + 5;
const int inf = 2e9 + 5;
int n;
int a[N];
string s;
map<char, int> nho;
int nhoa[N], nhob[N], nhoc[N];
int mina = inf, minb = inf, minc = inf;
int posa, posb, posc;
bool sol() {
  if (!nho['A'] || !nho['B'] || !nho['C']) return false;
  return true;
}
int main() {
  scanf("%d", &n);
  for (int i = 1; i <= n; i++) {
    scanf("%d", &a[i]);
    cin >> s;
    for (int j = 0; j < s.size(); j++) {
      nho[s[j]]++;
      switch (s[j]) {
        case 'A': {
          nhoa[i] = 1;
          break;
        }
        case 'B': {
          nhob[i] = 1;
          break;
        }
        case 'C': {
          nhoc[i] = 1;
          break;
        }
      }
    }
  }
  if (!sol()) {
    cout << -1;
    return 0;
  }
  for (int i = 1; i <= n; i++) {
    if (nhoa[i]) {
      if (mina > a[i]) {
        mina = a[i];
        posa = i;
      }
    }
    if (nhob[i]) {
      if (minb > a[i]) {
        minb = a[i];
        posb = i;
      }
    }
    if (nhoc[i]) {
      if (minc > a[i]) {
        minc = a[i];
        posc = i;
      }
    }
  }
  int ans = inf;
  for (int i = 1; i <= n; i++) {
    if (nhoa[i]) {
      for (int j = 1; j <= n; j++) {
        if (nhob[j]) {
          int res = 0;
          res += a[i];
          if (j != i) res += a[j];
          int t = a[posc];
          ans = min(ans, res + t);
          if (nhoc[i] || nhoc[j]) ans = min(ans, res);
        }
      }
    }
  }
  cout << ans;
}
