01 序列重排

题目描述

Y 同学得到了一个长度为 NN、仅由字符 '0''1' 构成的字符串 SS

他的目标是通过一系列操作,将字符串 SS 转化为一个有序状态。一个字符串被称为有序的,当且仅当使字符串满足"所有的 0 都不在 1 之后"这一条件的最少操作次数。。

Y 同学可以使用以下两种操作:

  1. 转化操作:选择一个索引 ii (1i<N1 \le i < N),当且仅当 si=0s_i = '0'si+1=0s_{i+1} = '0' 时,可以将它们同时修改为 si1,si+11s_i \leftarrow '1', s_{i+1} \leftarrow '1'
  2. 交换操作:选择一个索引 ii (1i<N1 \le i < N),当且仅当 si=1s_i = '1'si+1=0s_{i+1} = '0' 时,可以将它们修改为 si0,si+11s_i \leftarrow '0', s_{i+1} \leftarrow '1'

请你计算,要使字符串 SS 达到有序状态,所需的最少总操作次数是多少。

输入格式

第一行输入一个正整数 NN,表示字符串的长度。

第二行输入一个长度为 NN,由字符 '0''1' 构成的字符串 SS

输出格式

输出一个整数,表示使字符串满足条件的最少操作次数。

样例

样例输入 #1

5
10001

样例输出 #1

2

样例输入 #2

6
101000

样例输出 #2

3

样例输入 #3

6
100110

样例输出 #3

4

数据范围与约定

对于 100%100\% 的数据,保证:

  • 1N2×1051 \le N \le 2 \times 10^5
  • 字符串 SS 仅由字符 '0''1' 构成。