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 C (GCC 5.4.1) (judge verdict: Wrong Answer)

#include <stdio.h>
#include <string.h>

int main() {
  long int number, count = 0, i, j, count_ab = 0, count_a = 0, count_b = 0;
  char str[11];
  scanf("%ld", &number);
  for(i = 0; i <= number; i++) {
    scanf("%s", str);
    if(str[0] == 'B' && str[strlen(str)-1] == 'A') {
      count_ab++;
    } else if(str[strlen(str)-1] == 'A') {
      count_a++;
    } else if(str[0] == 'B') {
      count_b++;
    }
    for(j = 0; j < strlen(str) - 1; j++) {
      if(str[j] == 'A' && str[j+1] == 'B') {
        count++;
      }
    }
  }

  if(count_ab != 0) {
    count = count + count_ab - 1;
  }

  if(count_a != 0 && count_ab != 0) {
    count_a--;
    count++;
  }

  if(count_b != 0 && count_ab != 0) {
    count_b--;
    count++;
  }

  if(count_a <= count_b) {
    count += count_a;
  } else {
    count += count_b;
  }
  printf("%ld\n", count);
  return 0;
}