N = int(input()) A = list(map(int,input().split())) B = [(0,0)] x = 0 y = 0 for i in range(N): if A[i] == 2 or i == N-1: if A[i] == 0: x += 1 elif A[i] == 1: y += 1 if x == y == 0: continue B.append((x,y)) x = 0 y = 0 elif A[i] == 0: x += 1 elif A[i] == 1: y += 1 INF = float('inf') dp = [[INF] * 10001 for _ in range(len(B))] def check(t): if 0 <= t < 10001: return True else: return False dp[0][5000] = 0 for i in range(1,len(B)): x,y = B[i] for s in range(10001): if dp[i-1][s] == INF: continue if check(s-x): dp[i][s-x] = min(dp[i-1][s] + x,dp[i][s-x]) if check(s+y): dp[i][s+y] = min(dp[i-1][s] + y,dp[i][s+y]) ans = dp[len(B)-1][5000] if ans == INF: print(-1) else: print(ans//2)