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.util.Scanner;


class Main {
    public static void main (String[] arg) {
    	try (Scanner sc = new Scanner(System.in)) {
    		/*
    		 * 頭文字にBを含むもの
    		 * 末尾にAを含むもの
    		 * 頭文字にB　&& 末尾にAを含むもの
    		 * 上記以外
    		 */
    		int lineSize = sc.nextInt();
    		int countAB = 0;
    		int countInialB = 0 ;
    		int countEndA = 0;
    		int countIniBEndA = 0;
    		
    		for (int lineNum = 1; lineNum <= lineSize; lineNum++) {
    			String readStr = sc.next();
    			if (readStr.contains("AB")) {
    				countAB = readStr.split("AB").length - 1;
    			}
    			if (readStr.startsWith("B")) {
    				if (readStr.endsWith("A")) {
    					countIniBEndA++;
    					
    				} else {
    					countInialB++;
    				}
    				
    			} else if (readStr.endsWith("A")) {
    				countEndA++;
    			}
    		}
    		if (countIniBEndA == 0) {
    			countAB += Math.min(countEndA, countInialB);
    		} else if (countEndA + countInialB == 0) {
    			
    			/*
    			 * BA * 3 
    			 *  BA,BA,BA
    			 *  
    			 */
    			countAB += countIniBEndA - 1;
    		} else {
    			/*
    			 * BA * 3, B * 1
    			 *  BA,BA,BA,B : 4
    			 * BA * 3, A * 1
    			 *  A,BA,BA,BA : 4
    			 * BA * 3, A * 1, B * 1
    			 *  A,BA,BA,BA,B : 4
    			 * BA * 3, A * 1, B * 2
    			 *  A,BA,BA,BA,B,(B) : 4
    			 *  BA,BA,BA,B,A,B  : 4
    			 *  
    			 */
    			countAB += (Math.min(countEndA, countInialB) + countIniBEndA);
    			
    			
//    			System.out.println("initialB = " + countInialB + ";");
//    			System.out.println("endWithA = " + countEndA + ";");
//    			System.out.println("W = " + countIniBEndA + ";");
    		}
    		System.out.println(countAB);
    	} catch (Exception e) {
			// TODO: handle exception
		}
    } 
}