#include <bits/stdc++.h>
using namespace std;
int main() {
  ios::sync_with_stdio(false);
  cin.tie(NULL);
  int n, pos;
  char c;
  cin >> n;
  vector<long long> arrdisp, arra, arrb;
  long long ans = 0;
  for (int i = 0; i < (n); i++) {
    cin >> pos >> c;
    if (c == 'P') {
      arrdisp.push_back(pos);
      if (((int)(arrdisp).size()) == 1) {
        if (!arra.empty()) ans += arrdisp[0] - arra[0];
        if (!arrb.empty()) ans += arrdisp[0] - arrb[0];
      } else {
        long long d = arrdisp[((int)(arrdisp).size()) - 1] -
                      arrdisp[((int)(arrdisp).size()) - 2];
        long long dist1 = 2 * d, dist2 = d;
        if (!arra.empty()) {
          long long maxpair =
              max(arrdisp.back() - arra.back(),
                  arra.front() - arrdisp[((int)(arrdisp).size()) - 2]);
          for (int i = 0; i < (((int)(arra).size()) - 1); i++)
            maxpair = max(maxpair, arra[i + 1] - arra[i]);
          dist2 += (d - maxpair);
        }
        if (!arrb.empty()) {
          long long maxpair =
              max(arrdisp.back() - arrb.back(),
                  arrb.front() - arrdisp[((int)(arrdisp).size()) - 2]);
          for (int i = 0; i < (((int)(arrb).size()) - 1); i++)
            maxpair = max(maxpair, arrb[i + 1] - arrb[i]);
          dist2 += (d - maxpair);
        }
        ans += min(dist1, dist2);
      }
      arra.clear();
      arrb.clear();
    } else if (c == 'B') {
      arra.push_back(pos);
    } else {
      arrb.push_back(pos);
    }
  }
  if (arrdisp.empty()) {
    if (!arra.empty()) ans += (arra.back() - arra.front());
    if (!arrb.empty()) ans += (arrb.back() - arrb.front());
  } else {
    if (!arra.empty()) ans += arra.back() - arrdisp.back();
    if (!arrb.empty()) ans += arrb.back() - arrdisp.back();
  }
  cout << ans;
}
