#================================================= N=int(input()) A=list(map(int,input().split()))+[2] #=== P=A.count(0) Q=A.count(1) #=== 可能どうかの判定 X=[] x=0 for a in A: if a!=2: x+=1 else: if x: X.append(x) x=0 DP=[0]*(P+1); DP[0]=1 for x in X: for k in range(P,x-1,-1): DP[k]|=DP[k-x] if DP[P]==0: exit(print(-1)) #=== 回数を求める Y=[] p=q=0 p_sum=0 for a in A: if a==0: p+=1 p_sum+=1 elif a==1: q+=1 else: Y.append((p,q)) p=q=0 inf=float("inf") DP=[inf]*(p_sum+1); DP[0]=0 for p,q in Y: r=p+q for k in range(p_sum,r-1,-1): DP[k]=min(DP[k],DP[k-r]+q) print(DP[p_sum])