#include <bits/stdc++.h>

using namespace std;

typedef long long ll;

int gre[4005][4005]={}, gere[4005][4005]={};
ll dp[4005][4005];

int main(){
	ios_base::sync_with_stdio(false);
	cin.tie(NULL);
	
	int n; cin >> n;
	vector<int> a(2*n);
	
	map<int,int> mp;
	for(int i=0;i<2*n;i++){
		char p;
		cin >> p >> a[i];
		a[i]--;
		if(p=='B'){
			a[i]+=n;
		}
		mp[a[i]]=i;
	}
	
	for(int i=0;i<2*n;i++){
		for(int j=0;j<2*n;j++){
			if(i)
				gre[i][j]=gre[i-1][j], gere[i][j]=gere[i-1][j];
			
			if(j<n){
				gre[i][j]+=(a[i]<n)&&(a[i]>j);
				gere[i][j]+=(a[i]<n)&&(a[i]>=j);
			}
			else{
				gre[i][j]+=(a[i]>j);
				gere[i][j]+=(a[i]>=j);
			}
		} 
	}
	
	memset(dp,0x3f,sizeof(dp));
	dp[0][0]=0;
	
	for(int i=0;i<2*n;i++){
		for(int j=0;j<=n;j++){
			if(j>i)
				continue;
			
			int lw=j, lb=i-j;
			
			if(lw<n){
				int indw = mp[lw];
				
				dp[i+1][j+1]=min(dp[i+1][j+1], dp[i][j]+gre[indw][lw]+((lb>0)?gre[indw][lb+n-1]:gere[indw][n]));
			}
			if(lb<n){
				int indb = mp[lb+n];
				
				dp[i+1][j]=min(dp[i+1][j], dp[i][j]+gre[indb][lb+n]+((lw>0)?gre[indb][lw-1]:gere[indb][0]));
			}
			
		}
	}
	
	cout << dp[2*n][n] << endl;
	return 0;
}