数位dp?
时间限制:C/C++/Rust/Pascal 1秒,其他语言2秒
空间限制:C/C++/Rust/Pascal 256 M,其他语言512 M
64bit IO Format: %lld

题目描述

长途正在擦黑板,瞅着黑板上的数字,陷入了沉思……
给定一个数字n,你可以对它进行接下来的操作——
  • 选择数字中任意一个数位删除
例如对1\underline{0}24选择操作百位,数字则变成了124;对\underline{1}024选择操作千位,数字则变成了024
我们称一个数字是干净的,当且仅当数字满足以下任意一种情况:
  • 这个数字是偶数且不含前导零
  • 这个数字为空
请问最少需要进行多少次操作,使得数字n变成干净

输入描述:

第一行包含一个整数\ n\ (1\le n\le10^9),表示这个数字的大小
输入的数字保证不含前导零

输出描述:

输出最少需要的操作次数。

注意,因为一定能使得数字删成空,所以当前数字一定能变成干净的

示例1

输入

复制
1024

输出

复制
0

说明

当前数字无需操作便满足条件
示例2

输入

复制
3

输出

复制
1

说明

最少只需要删除一次即可把数字删成空
\underline{3}\Rightarrow\bcancel{3}
示例3

输入

复制
233

输出

复制
2

说明

最少只需要删除两次即可把数字删成偶数
23\underline{3}\Rightarrow2\underline{3}\bcancel{3}\Rightarrow2\bcancel{3}\bcancel{3}