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>
#include <stdlib.h>
#include <math.h>

int check_ab(char *s, int len) {
    int count = 0;
    int flag = 0;
    for (int i=0; i<len; i++) {
        if (s[i] == 'A') flag = 1;
        else if (s[i] == 'B') {
            if (flag) {
                count++;
                flag = 0;
            }
        }
        else flag = 0;
    }
    return count;
}

int main() {
    int n = 0;
    scanf("%d\n", &n);
    int ans = 0;
    char s[12];
    int len = 0;
    int count1=0, count2=0, count3=0;
    for (int i=0; i<n; i++) {
        fgets(s, 12, stdin);
        if (s[strlen(s)-1] != '\n') len = strlen(s);
        else len = strlen(s) - 1;
        ans += check_ab(s, len);
        if (s[0] == 'B') {
            if (s[len-1] == 'A') count1++;
            else count3++;
        }
        else if (s[len-1] == 'A') count2++;
    }
    int a = count1 + count2;
    int b = count1 + count3;
    if (a > b) printf("%d\n", ans + b);
    else if (b > a) printf("%d\n", ans + a);
    else {
        if (count2 == 0) printf("%d\n", count1-1+ans);
        else if (a == 0) printf("%d\n", ans);
        else printf("%d\n", ans+a);
    }
    return 0;
}