#include <bits/stdc++.h>
using namespace std;
const int maxn = 1e5 + 10;
const int maxm = 4e5 * 26 + 5;
const int INF = 0x3f3f3f3f;
const long long LINF = 3e17 + 1;
const int mod = 1e9 + 7;
const int MOD = 1e6 + 7;
inline long long read() {
  register long long x = 0, f = 1;
  char ch = getchar();
  while (!isdigit(ch)) {
    if (ch == '-') f = -1;
    ch = getchar();
  }
  while (isdigit(ch)) {
    x = (x << 3) + (x << 1) + ch - '0';
    ch = getchar();
  }
  return (f == 1) ? x : -x;
}
char ss[17][2];
int costa[16], costb[16];
int dp[1 << 16][121], offa[1 << 16], offb[1 << 16];
int main() {
  int n = read();
  int tota = 0, totb = 0;
  int s = 1 << n;
  for (int i = 0; i < n; i++) {
    scanf("%s", ss[i]);
    costa[i] = read();
    costb[i] = read();
    tota += costa[i];
    totb += costb[i];
  }
  for (int i = 0; i < s; ++i)
    for (int j = 0; j < n; ++j)
      if (i & (1 << j)) {
        offa[i] += ss[j][0] == 'R' ? 1 : 0;
        offb[i] += ss[j][0] == 'B' ? 1 : 0;
      }
  memset(dp, -1, sizeof(dp));
  dp[0][0] = 0;
  int na, nb;
  for (int i = 0; i < s; ++i)
    for (int j = 0; j <= 120; ++j) {
      if (dp[i][j] == -1) continue;
      for (int k = 0; k < n; ++k) {
        if (i & (1 << k)) continue;
        na = min(costa[k], offa[i]);
        nb = min(costb[k], offb[i]);
        dp[i | (1 << k)][j + na] = max(dp[i | (1 << k)][j + na], dp[i][j] + nb);
      }
    }
  int res = max(tota, totb);
  for (int i = 0; i <= 120; ++i)
    if (dp[s - 1][i] != -1) res = min(res, max(tota - i, totb - dp[s - 1][i]));
  cout << res + n << endl;
  return 0;
}
