AT_arc063_a [ABC047C] 一次元リバーシ

题目描述

狐狸次郎和三郎正在玩一维翻转棋。在一维翻转棋中,棋盘上的棋子只有黑色或白色,所有棋子排成一行。每次可以在最左端或最右端新下一个棋子。与普通翻转棋一样,例如下一个白色棋子时,如果夹住了黑色棋子,被夹住的黑色棋子会变成白色。 游戏进行到一半时,三郎突然有急事离开了。这时,棋盘的状态用字符串 $S$ 表示。棋盘上共有 $|S|$(字符串长度)个棋子,从左到右第 $i$ 个棋子的颜色由 $S$ 的第 $i$ 个字符决定,若为 `B` 则为黑色,若为 `W` 则为白色。 次郎想通过尽可能少地下棋,使得所有棋子的颜色都相同。请你求出最少需要下多少个棋子,才能使所有棋子颜色相同。

输入格式

输入为一行,包含一个字符串 $S$。

输出格式

输出使所有棋子颜色相同所需下的最少棋子数。

说明/提示

## 限制条件 - $1 \leq |S| \leq 10^5$ - $S$ 只包含字符 `B` 或 `W` ## 样例解释 1 例如,在右端下一个黑色棋子,可以将所有白色棋子变为黑色。或者在左端下一个白色棋子,也可以将所有棋子变为同一种颜色。无论哪种情况,只需下 $1$ 个棋子即可使所有棋子颜色相同,因此输出 $1$。 ## 样例解释 2 如果一开始所有棋子颜色都相同,则无需再下棋。 由 ChatGPT 4.1 翻译