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 JavaScript (node.js v5.12) (judge verdict: Wrong Answer)

// inputに入力データ全体が入る
function Main(input) {
    input = input.trim();
    input = input.split("\n");
    var N = input[0];
    var countA = 0;
    var countB = 0;
    var sameAB = 0;
    var countAB = 0;

    for(var i = 0; i <= N; i++){
        countAB += input[i].split("AB").length-1;
        if(input[i].lastIndexOf("A") == input[i].length-1){
            countA++;
        }
        if(input[i].indexOf("B") == 0){
            countB++;
        }
        if(input[i].lastIndexOf("A") == input[i].length-1 && input[i].indexOf("B") == 0){
            sameAB = 1;
        }
    }
    if(countA == countB){
        countAB += Math.min(countA,countB) - sameAB;
    }
    else{
        countAB += Math.min(countA,countB);
    }
    console.log(countAB);
}
//*この行以降は編集しないでください（標準入出力から一度に読み込み、Mainを呼び出します）
Main(require("fs").readFileSync("/dev/stdin", "utf8"));