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>
#define max(x,y) ((x)>(y)?(x):(y))
#define min(x,y) ((x)<(y)?(x):(y))
#define FOR(i,m,n) for(i=m;i<n;i++)

int main(void)
{
	long long a,c,i,j,x=0,y=0,z=0,d=0,e,f,g;
	char b[12];
	scanf("%lld",&a);
	for(i=0;i<a;i++){
		scanf("%s",b);
		c=strlen(b);
		for(j=0;j<c-1;j++){
			if(b[j]=='A'){
				if(b[j+1]=='B') d++;
			}
		}
		if(b[0]=='B'){
			if(b[c-1]=='A'){
				x++;
			}else{
				y++;
			}
		}else if(b[c-1]=='A'){
			z++;
		}
	}
	g=max(x-1,0);
	e=min(y,z);
	f=min(max(y,z)-e,min(1,x));
	printf("%lld %lld %lld %lld\n",x,y,z,d);
	printf("%lld\n",d+e+f+g);
	return 0;
}