Dyzio 是 Jasiek 的朋友,他也喜欢谜题。以下是 Dyzio 给 Jasiek 带来的一道谜题:
“Jasiek,给你一根绳子,需要把它剪成更短的小段。我不会直接告诉你怎么做,但你看这串由 0 和 1 组成的序列。开头的 1 表示需要将绳子剪成两半。但如果第一个数字是 0,那么它将是序列中唯一的数字,表示你什么都不需要做——我想保留整根绳子。如果你必须剪开绳子,那么在第一个 1 之后,我写下了如何处理左边那段(采用与整根绳子相同的规则),接着写下了如何处理右边那段(始终遵循相同的记录规则)。你必须总是先剪左边那段,然后才能开始剪右边那段。现在开始剪吧,并告诉我,为了得到(第一根)最短的绳子,最少需要进行多少次剪切。”
不幸的是,妈妈把剪刀藏起来不给 Jasiek,但幸运的是手边有一台电脑,Jasiek 很快写了一个程序来模拟剪绳子的过程。你也能写出这样一个程序吗?
写一个程序:
- 从标准输入读入剪绳子方式的描述,
- 计算为了得到(第一根)最短的绳子,最少需要进行多少次剪切,
- 向标准输出输出结果。
输入格式
输入的第一行包含一个整数 $n$($1 \le n \le 20\,000$)。
输入的第二行包含一个长度恰好为 $n$ 的 01 字符串(中间没有空格的 0 和 1 序列),表示 Dyzio 提供的剪绳子方式的描述。
输出格式
输出仅包含一行,其中有一个整数,表示为了得到最短的绳子所需要进行的最少剪切次数。
样例
输入样例 1
9 110011000
输出样例 1
4