def min_operations_to_good_string(S): N = len(S) ones = S.count('1') zero_blocks = [] i = 0 while i < N: if S[i] == '0': start = i while i < N and S[i] == '0': i += 1 length = i - start if length >= 2: zero_blocks.append(length) else: i += 1 total_zeros_in_blocks = sum(zero_blocks) if total_zeros_in_blocks < ones: return 0 zero_blocks.sort(reverse=True) ops = 0 for block in zero_blocks: for _ in range(block): total_zeros_in_blocks -= 1 ops += 1 ones += 1 if total_zeros_in_blocks < ones: return ops return ops if __name__ == "__main__": N = int(input()) S = input().strip() print(min_operations_to_good_string(S))