```go
package main
import (
"bufio"
"fmt"
"os"
"unicode"
)
func main() {
scanner := bufio.NewScanner(os.Stdin)
scanner.Scan()
s := scanner.Text()
n := len(s)
prefixL := make([]int, n+1)
prefixL[0] = 0
for i := 1; i <= n; i++ {
if unicode.IsLower(rune(s[i-1])) {
prefixL[i] = prefixL[i-1] + 1
} else {
prefixL[i] = prefixL[i-1]
}
}
totalL := prefixL[n]
minCost := n + 1
for k := 0; k <= n; k++ {
cost := 2*prefixL[k] + n - k - totalL
if cost < minCost {
minCost = cost
}
}
fmt.Println(minCost)
}
```