小苯的字符串变化
时间限制:C/C++/Rust/Pascal 1秒,其他语言2秒
空间限制:C/C++/Rust/Pascal 256 M,其他语言512 M
64bit IO Format: %lld

题目描述

小苯有一个长度为 n 的字符串 s,每次操作他可以选择一个位置的字母将其的大小写反转,也就是说如果字符是小写,则操作后会变成大写,如果字符是大写则反之。

他现在希望将 s 变为:“前面若干字符是大写,后面的字符全是小写”的样子,例如:"AABBccdd"。
(但全大写和全小写均不合法)
请问他最少需要进行几次操作呢,请你帮帮他吧。

输入描述:

输入包含一行一个字符串 s\ (2 \leq |s| \leq 10^5),表示题中所述的字符串,保证只包含小写和大写字母。

输出描述:

输出包含一行一个整数,表示最少的操作次数。
示例1

输入

复制
aaBB

输出

复制
3

说明

可以将字符串变为:"AABb",操作了 3 次。
示例2

输入

复制
AAAA

输出

复制
1

说明

变为:"AAAa",操作 1 次。