Problem:
Score : 400 points

Problem Statement

An altar enshrines N stones arranged in a row from left to right. The color of the i-th stone from the left (1 \leq i \leq N) is given to you as a character c_i; R stands for red and W stands for white.

You can do the following two kinds of operations any number of times in any order:

Choose two stones (not necessarily adjacent) and swap them.

Choose one stone and change its color (from red to white and vice versa).

According to a fortune-teller, a white stone placed to the immediate left of a red stone will bring a disaster. At least how many operations are needed to reach a situation without such a white stone?

Constraints

2 \leq N \leq 200000

c_i is R or W.

Input

Input is given from Standard Input in the following format:

N
c_{1}c_{2}...c_{N}

Output

Print an integer representing the minimum number of operations needed.

Sample Input 1

4
WWRR

Sample Output 1

2

For example, the two operations below will achieve the objective.

Swap the 1-st and 3-rd stones from the left, resulting in RWWR.

Change the color of the 4-th stone from the left, resulting in RWWW.

Sample Input 2

2
RR

Sample Output 2

0

It can be the case that no operation is needed.

Sample Input 3

8
WRWWRWRR

Sample Output 3

3

Solution in C++ (GCC 9.2.1) (judge verdict: Accepted)

#include<bits/stdc++.h>
using namespace std;
 
#define ll long long
#define ld double
#define mp make_pair
#define pb push_back
#define F first
#define S second
#define setpr(pp) fixed<<setprecision(pp)
#define FOR(I,N) for(I=0;I<N;++I)
#define MS0(x) memset(x,0,sizeof(x))
#define MS1(x) memset(x,-1,sizeof(x))
#define IOS ios_base::sync_with_stdio(false);cin.tie(NULL);cout.tie(NULL)
#define mod	%1000000007
#define pi 3.141592653
#define MX 1000000007

int main()
{
	
	/*ll n,i,w=0,r=0,ans=0;
	bool f=0;
	char c;
	cin>>n;
	cin>>c;
	if(c=='W')
	{
		f=0;
		w++;
	}
	else
	{
		f=1;
		r++;
	}
	FOR(i,n-1)
	{
		cin>>c;
		if(f==0)
		{
			if(c=='W')
				++w;
			else
			{
				f=1;
				r=1;;
			}
		}
		else
		{
			if(c=='R')
			{
				++r;
			}
			else
			{
				ans+=min(w,r);
				w=1;
				f=0;
				r=0;
			}
		}
	}

	if(f==1)
		ans+=min(w,r);

	cout<<ans;*/
	string s;
	int n,i;
	cin>>n;
	cin>>s;
	set<ll> w,r;
	ll ans=0;
	FOR(i,n){
		if(s[i]=='W'){
			w.insert(i);
		}else{
			r.insert(i);
		}
	}
	while(w.size()&&r.size()){
		if(*w.begin()<*r.rbegin()){
			ans++;
			w.erase(w.begin());
			r.erase(*r.rbegin());
		}else{
			break;
		}
	}
	cout<<ans<<"\n";
}