#include <bits/stdc++.h>
struct vit {
  int price;
  char vit[4];
};
int main() {
  int i, n, min;
  scanf("%d", &n);
  struct vit t[n];
  for (i = 0; i < n; i++) {
    scanf("%d %s", &t[i].price, t[i].vit);
  }
  int A = 300001, B = 300001, C = 300001, AB = 300001, AC = 300001, BC = 300001,
      ABC = 300001;
  for (i = 0; i < n; i++) {
    if (strcmp("A", t[i].vit) == 0) {
      if (A > t[i].price) A = t[i].price;
    }
  }
  for (i = 0; i < n; i++) {
    if (strcmp("B", t[i].vit) == 0) {
      if (B > t[i].price) B = t[i].price;
    }
  }
  for (i = 0; i < n; i++) {
    if (strcmp("C", t[i].vit) == 0) {
      if (C > t[i].price) C = t[i].price;
    }
  }
  for (i = 0; i < n; i++) {
    if ((strcmp("AB", t[i].vit) == 0) || (strcmp("BA", t[i].vit) == 0)) {
      if (AB > t[i].price) AB = t[i].price;
    }
  }
  for (i = 0; i < n; i++) {
    if ((strcmp("BC", t[i].vit) == 0) || (strcmp("CB", t[i].vit) == 0)) {
      if (BC > t[i].price) BC = t[i].price;
    }
  }
  for (i = 0; i < n; i++) {
    if ((strcmp("AC", t[i].vit) == 0) || (strcmp("CA", t[i].vit) == 0)) {
      if (AC > t[i].price) AC = t[i].price;
    }
  }
  for (i = 0; i < n; i++) {
    if ((strcmp("ABC", t[i].vit) == 0) || (strcmp("ACB", t[i].vit) == 0) ||
        (strcmp("BAC", t[i].vit) == 0) || (strcmp("BCA", t[i].vit) == 0) ||
        (strcmp("CAB", t[i].vit) == 0) || (strcmp("CBA", t[i].vit) == 0)) {
      if (ABC > t[i].price) ABC = t[i].price;
    }
  }
  min = ABC;
  if (A + B + C < min) min = A + B + C;
  if (AB + C < min) min = AB + C;
  if (BC + A < min) min = BC + A;
  if (AC + B < min) min = AC + B;
  if (AB + BC < min) min = AB + BC;
  if (AB + AC < min) min = AB + AC;
  if (BC + AC < min) min = BC + AC;
  if (min > 300000) {
    printf("-1");
    return 0;
  }
  printf("%d", min);
  return 0;
}
