#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;   }   