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: Wrong Answer)

    //For higher stack size use g++ -O2 -std=c++11 -Wall -Wl,--stack=268435456 a.cpp -o a.exe in cmd
    #include <bits/stdc++.h>
    #include <cstdio>
    #include <cstring>
    #include <cmath>
    #include <cstring>
    #include <chrono>
    #include <complex>
    #define ll long long
    #define ld long double
    #define vi vector<int>
    #define vll vector<ll>
    #define vvi vector < vi >
    #define pii pair<int,int>
    #define pll pair<long long, long long>
    #define mod 1000000007
    #define inf 1000000000000000001;
    #define all(c) c.begin(),c.end()
    #define mp(x,y) make_pair(x,y)
    #define mem(a,val) memset(a,val,sizeof(a))
    #define eb emplace_back
    #define pb push_back
    #define f first
    #define s second
    
    using namespace std;
    int main()
    {
        std::ios::sync_with_stdio(false);
        int T;
        T=1;
        // cin.ignore(); must be there when using getline(cin, s)
        while(T--)
        {
            int n,i,j;
            cin>>n;
            string s;
            cin>>s;
            n=s.length();
            int flag=0,ct=0,ct2=0,ct3,ct4;
            for(i=0;i<n;++i)
            {
                if(s[i]=='W')
                {
                    ++ct;
                }
                else
                {
                    ++ct2;
                }
            }
            ct3=ct;
            ct4=ct2;
            for(i=0;i<n;++i)
            {
                if(s[i]=='W')
                {
                    ct2=ct2-i;
                    break;
                }
            }
            for(i=n-1,j=0;i>=0;--i,++j)
            {
                if(s[i]=='R')
                {
                    ct=ct-j;
                    break;
                }
            }
            int ans=min(ct,ct2),ans2=0;
            for(i=n-ct;i<n;++i)
            {
                if(s[i]=='R')
                    ++ans2;
            }
            ans=min(ans,ans2);
            ans2=ct3;
            for(i=n-ct;i<n;++i)
            {
                if(s[i]=='W')
                    --ans2;
            }
            ans=min(ans,ans2);
            ans2=0;
            for(i=0;i<ct2;++i)
            {
                if(s[i]=='W')
                    ++ans2;
            }
            ans=min(ans,ans2);
            cout<<ans<<endl;
        }
        return 0;
    }