游游的交换字符
时间限制:C/C++/Rust/Pascal 1秒,其他语言2秒
空间限制:C/C++/Rust/Pascal 256 M,其他语言512 M
64bit IO Format: %lld

题目描述

游游拿到了一个01串(仅由字符'0'和字符'1'构成的字符串)。游游每次操作可以交换两个相邻的字符,例如,对于字符串"11001"而言,游游可以交换第二个字符和第三个字符变成"10101"。
游游希望最终字符串任意两个相邻的字符都不相同,她想知道最少需要多少操作次数?保证答案是有解的,即最终一定能形成任意两个相邻的字符都不相同的字符串。

输入描述:

一行仅由 '0' 、 '1' 组成的字符串,字符串长度 n 满足 

输出描述:

游游使得相邻两个字母不等的最少操作次数。
示例1

输入

复制
11100

输出

复制
3

说明

先交换第三个、第四个字符,得到字符串"11010"。
然后交换第二个、第三个字符,得到字符串"10110"。
最后交换第四个、第五个字符,得到字符串"10101"。
总共交换3次。
示例2

输入

复制
01011

输出

复制
2

说明

先交换前两个字符,得到字符串"10011"
然后交换第三个、第四个字符,得到字符串"10101"