"""
算法解释
1、统计奇偶个数:遍历数组,统计奇数和偶数的数量
2、特殊情况处理:
无偶数时返回 - 1
全为偶数时返回 0
3、计算操作次数:
当有至少 2 个偶数时,每个奇数只需 1 次操作变为偶数
当只有 1 个偶数时,需要 1 次额外操作生成第二个偶数,再处理剩余奇数
4、复杂度分析
时间复杂度:O (n),其中 n 是数组长度,只需遍历数组一次
空间复杂度:O (1),只使用了常数级别的额外空间
"""
import math
def min_operations_to_even(n, array):
# 统计奇数和偶数的个数
odd_count = 0
even_count = 0
for num in array:
if num % 2 == 1:
odd_count += 1
else:
even_count += 1
# 如果没有偶数,无法全变为偶数
if even_count == 0:
return -1
# 如果已经全是偶数
if odd_count == 0:
return 0
# 如果有至少2个偶数,可以直接将奇数变为偶数
if even_count >= 2:
return odd_count
# 如果只有1个偶数,需要先操作一次生成第二个偶数
return odd_count
# 读取输入
n = int(input())
array = list(map(int, input().split()))
# 计算并输出结果
result = min_operations_to_even(n, array)
print(result)