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: Accepted)



function Main(input) {
  input = input.split("\n");
  var N = parseInt(input[0]);
  var s = new Array(N);
  var a=0;
  var b=0;
  var c=0;
  var ba=0;
  var ans=0;
  for(var i=0;i<N;i++){
    s[i]=input[i+1].split("");
    for(var j=0;j<s[i].length;j++){
      if(j==0&&s[i][j]=="B"){
        b++;
        c++;
      }
      if(j==s[i].length-1&&s[i][j]=="A"){
        a++;
        c++;
      }
      if(s[i][j]=="B"&&j>0){
        if(s[i][j-1]=="A"){
          ans++;
        }
      }
      if(c==2){
        ba++;
      }
    }
    c=0;
  }
  ans=ans+Math.min(a,b);
  if(b==ba&&a==ba&&ba!=0){
    ans--;
  }
  

  console.log('%s', ans);
  return ans;
}

function debug(n){
  var input = document.getElementById("input"+n).value;
  var ans=Main(input);
  var result="WA";
  if(ans==document.getElementById("output"+n).value.split("\n")[0]){
    result="AC";
  }
  document.getElementById("result"+n).innerHTML=result;
}
Main(require("fs").readFileSync("/dev/stdin", "utf8"));