Problem:
Score : 400 points

Problem Statement

Snuke has N strings. The i-th string is s_i.

Let us concatenate these strings into one string after arranging them in some order.
Find the maximum possible number of occurrences of AB in the resulting string.

Constraints

1 \leq N \leq 10^{4}

2 \leq |s_i| \leq 10

s_i consists of uppercase English letters.

Input

Input is given from Standard Input in the following format:

N
s_1
\vdots
s_N

Output

Print the answer.

Sample Input 1

3
ABCA
XBAZ
BAD

Sample Output 1

2

For example, if we concatenate ABCA, BAD and XBAZ in this order, the resulting string ABCABADXBAZ has two occurrences of AB.

Sample Input 2

9
BEWPVCRWH
ZZNQYIJX
BAVREA
PA
HJMYITEOX
BCJHMRMNK
BP
QVFABZ
PRGKSPUNA

Sample Output 2

4

Sample Input 3

7
RABYBBE
JOZ
BMHQUVA
BPA
ISU
MCMABAOBHZ
SZMEHMA

Sample Output 3

4

Solution in Haskell (GHC 7.10.3) (judge verdict: Wrong Answer)

module Main where

import           Control.Monad
import           Control.Monad.State
import           Data.Array.IO
import           Data.List
import           Data.List.Split
import           Data.Ord
import qualified Data.Vector.Unboxed as V
import           Text.Printf

main :: IO ()
main = do
  n <- readLn
  ss <- replicateM n getLine :: IO [String]
  let cs = (sum . map count) ss
      both = (length . filter (\x -> head x == 'B' && last x == 'A')) ss
      as = (length . filter ((==) 'A' . last)) ss - both
      bs = (length . filter ((==) 'B' . head)) ss - both
  print $ cs + ans both as bs
  where
    count (a:b:xs)
      | a == 'A' && b == 'B' = 1 + count xs
      | b == 'A' = count (b:xs)
      | otherwise = count xs
    count _ = 0

    ans both as bs
      | as == 0 && bs == 0 = both
      | bs == 0 = both
      | as == 0 = both
      | otherwise = both + min as bs