import qualified Data.ByteString.Char8 as BS
import Data.Char
import Data.List

main = do
  BS.getLine
  li <- BS.getLine
  let ans = compute li
  print ans

compute :: BS.ByteString -> Int
compute bs = loop bs 0 0 (BS.length bs - 1)

loop bs cnt i j
  | i >= j = cnt
  | BS.index bs i == 'R' = loop bs cnt (succ i) j
  | BS.index bs j == 'W' = loop bs cnt i (pred j)
  | otherwise = loop bs (succ cnt) (succ i) (pred j)
{-
R赤を全て左に寄せればよい。
Rが極端に少なければ、それを塗り替えて終わることも可能かも。でも同じ手数でぜんぶ左に寄せられるので考える必要なし。
W白が極端に少なければ、同様に。
右の方のRを塗り替えると、1つだけRが助かる。
左に接しているRの列の末尾の次のWと、離れたところのRを入れ替えることで、1つ以上のRが助かる。
Wを塗り替えることでも同様の効果がなくもないが、それは同等なので考える必要がない。
結局、配列の書き換えとか考えなくても、左右からポインタを動かして、好ましくないのが揃ったら入れ替える、を繰り返して、
両方が出会ったらおしまい、でいいのか。
-}
