#include<iostream>
#include<cstdio>
#include<cstring>
#define N (2020)
#define INF (21000010)
using namespace std;
int p[2][N],A[2][N][2][N],n,dp[N][N],a[2*N],C[2][N][N];
//0 B/1 W			//A存每个球后面的球的情况 
char c[2*N];
int main(){
	scanf("%d",&n); int j,i,i1,j1; getchar();
	for (i=1;i<=2*n;i++){
		scanf("%c %d",&c[i],&a[i]); getchar();
		p[(c[i]=='W')][a[i]]=i; 
	}
	for (i=1;i<=2*n;i++)
		for (j=i+1;j<=2*n;j++)
			A[(c[i]=='W')][a[i]][(c[j]=='W')][a[j]]=1;
	for (i1=0;i1<2;i1++) for(i=1;i<=n;i++)
		for (j1=0;j1<2;j1++) for (j=1;j<=n;j++)
			A[i1][i][j1][j]+=A[i1][i][j1][j-1];
 	
	for (i=0;i<=n;i++) for (j=0;j<=n;j++){
 		C[0][i][j]=A[0][i+1][0][i]+A[0][i+1][1][j]+p[0][i+1]-(i+j+1);
 		C[1][i][j]=A[1][j+1][0][i]+A[1][j+1][1][j]+p[1][j+1]-(i+j+1);
 	}

 	for (i=0;i<=n;i++) for (j=0;j<=n;j++){
 		if (!i&&!j) continue;
 		dp[i][j]=INF; 
 		if (i>0) dp[i][j]=min(dp[i][j],dp[i-1][j]+C[0][i-1][j]);
 		if (j>0) dp[i][j]=min(dp[i][j],dp[i][j-1]+C[1][i][j-1]);
	}
	cout<<dp[n][n];
}