游游的01串操作
题号:NC257437
时间限制:C/C++/Rust/Pascal 1秒,其他语言2秒
空间限制:C/C++/Rust/Pascal 256 M,其他语言512 M
64bit IO Format: %lld

题目描述

游游拿到了一个01串(仅由字符'0'和字符'1'构成的字符串)。游游每次操作可以选择对其中一个字符取反(即1变0,或者0变1),对第 i 个字符取反的代价为 i。(代价从1开始计算,即第一个字母的代价是1)
游游希望最终字符串任意两个相邻的字符都不相同,她想知道花费代价之和的最小值的多少?

输入描述:

一行仅由 '0' 、 '1' 组成的字符串,长度不超过 100000。

输出描述:

一个整数,代表代价之和的最小值。
示例1

输入

复制
11101

输出

复制
2

说明

把第二个字母取反,代价为2。字符串变成10101。
示例2

输入

复制
0111111

输出

复制
13

说明

取反第1、2、4、6个字符,总代价为1+2+4+6=13