最近,围棋(一种传统的棋盘游戏)AI 的研究非常热门。你的朋友 Hikaru 计划开发一款名为 Sai 的超强围棋 AI,并打算将来将其推广给 F 公司或 G 公司。作为第一步,Hikaru 决定为 1D-Go(一维围棋,原版围棋的简化版本)开发一个 AI。
在原版围棋和 1D-Go 中,吃子都是一项重要的策略。Hikaru 请你实现其中一个吃子功能。
在 1D-Go 中,棋盘由排成一行的 $L$ 个格子组成。1D-Go 的状态由一个长度为 $L$ 的字符串 $S$ 描述。$S$ 的第 $i$ 个字符描述了第 $i$ 个格子的状态:
- 当 $S$ 的第 $i$ 个字符为 ‘B’ 时,第 $i$ 个格子包含一颗黑子。
- 当 $S$ 的第 $i$ 个字符为 ‘W’ 时,第 $i$ 个格子包含一颗白子。
- 当 $S$ 的第 $i$ 个字符为 ‘.’ 时,第 $i$ 个格子为空。
相同颜色的最大连续棋子序列称为“气”(chain)。当一个气被对方颜色的棋子包围时,该气将被吃掉。
更准确地说,如果第 $i$ 个格子和第 $j$ 个格子($1 < i + 1 < j \le L$)包含白子,且索引为 $k$($i < k < j$)的每个格子都包含黑子,那么这些黑子将被吃掉;反之亦然。
请注意,1D-Go 的某些规则与原版围棋有很大不同。从原版围棋中获得的一些直觉可能会导致错误。
给定一个 1D-Go 的状态,下一手将由执白棋的玩家落子。玩家可以在其中一个空位放置一颗白子。但是,玩家不能制造出被黑子包围的白子气,即使这样做同时能吃掉某些黑子气也不行。题目保证给定的状态下至少有一个格子可以放置白子,且当前不存在已经被包围的气。
编写一个程序,计算执白棋的玩家在下一手落子后,最多能吃掉多少颗黑子。
输入格式
输入的第一行包含一个整数 $L$($1 \le L \le 100$),表示棋盘的长度;$S$($|S| = L$)是一个描述 1D-Go 状态的字符串。给定的状态保证至少有一个格子可以放置白子,且当前不存在已经被包围的气。
输出格式
输出下一手落子后最多能吃掉的黑子数量。
样例
样例输入 1
5 .WB..
样例输出 1
1
样例输入 2
5 .WBB.
样例输出 2
2
样例输入 3
6 .WB.B.
样例输出 3
0
样例输入 4
6 .WB.WB
样例输出 4
0
说明
在第 3 个和第 4 个测试用例中,玩家不能在第 4 个格子放置白子,因为这样形成的白子气会被黑子包围。此规则与原版围棋不同。
在第 5 个测试用例中(注:指样例 4),即使玩家在第 4 个格子放置白子,也无法吃掉任何黑子。玩家不能通过棋盘边缘和白子来包围并吃掉黑子。此规则也与原版围棋不同。