-- diverta 2019 C problem
import Control.Monad
import qualified Data.Text as T

-- conversion from String to Int
toInt :: String -> Int
toInt x = read x :: Int

-- obtain [Int] from I/O
getInts :: IO [Int]
getInts = do
  x <- getLine
  let y = (map $ toInt) $ words x
  return y

getLines :: IO T.Text
getLines = do
    x <- getLine
    let y = T.pack x
    return y

-- for each line
findAB :: T.Text -> Int
findAB s =
    if (T.tail s) == T.empty then 0
    else
        if (T.head s) == 'A' && (T.head (T.tail s)) == 'B' then 1 + (findAB (T.tail s))
        else (findAB (T.tail s))

totalInnerAB :: [T.Text] -> Int
totalInnerAB [] = 0
totalInnerAB (x:xs) = (findAB x) + (totalInnerAB xs)

countBhead :: [T.Text] -> Int
countBhead [] = 0
countBhead (x:xs) =
    if (T.head x == 'B') then 1 + (countBhead xs)
    else (countBhead xs)

countAbottom :: [T.Text] -> Int
countAbottom [] = 0
countAbottom (x:xs) =
    if (T.last x == 'A') then 1 + (countBhead xs)
    else (countAbottom xs)

proC :: [T.Text] -> Int
proC s = (totalInnerAB s) + (min (countAbottom s) (countBhead s))

-- main function
main :: IO ()
main = do
    n1 <- getInts
    let n = head n1
    ss <- replicateM n getLines
    print (proC ss)