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 Java8 (OpenJDK 1.8.0) (judge verdict: Wrong Answer)

import java.io.OutputStream;
import java.io.IOException;
import java.io.InputStream;
import java.io.PrintWriter;
import java.util.Scanner;

/**
 * Built using CHelper plug-in
 * Actual solution is at the top
 */
public class Main {
    public static void main(String[] args) {
        InputStream inputStream = System.in;
        OutputStream outputStream = System.out;
        Scanner in = new Scanner(inputStream);
        PrintWriter out = new PrintWriter(outputStream);
        C solver = new C();
        solver.solve(1, in, out);
        out.close();
    }

    static class C {
        public void solve(int testNumber, Scanner in, PrintWriter out) {
            int N = in.nextInt();
            String[] s = new String[N];

            int count = 0;
            int countA = 0;
            int countB = 0;
            int countBoth = 0;

            for (int i = 0; i < N; i++) {
                s[i] = in.next();
                if (s[i].startsWith("B") && s[i].endsWith("A")) {
                    countBoth++;
                } else if (s[i].startsWith("B")) {
                    countB++;
                } else if (s[i].endsWith("A")) {
                    countA++;
                }
                int len = s[i].length();
                for (int j = 0; j < len - 1; j++) {
                    if (s[i].charAt(j) == 'A' && s[i].charAt(j + 1) == 'B') {
                        count++;
                    }
                }
            }

            int minAB = Math.min(countA, countB);
            countA -= minAB;
            countB -= minAB;
            count += minAB;

            if (countBoth > 0) {
                if (countA > 0 || countB > 0) {
                    count += countBoth;
                } else {
                    count += countBoth - 1;
                }
            }
            out.println(count);
        }

    }
}