import sys input = lambda : sys.stdin.readline().rstrip() sys.setrecursionlimit(2*10**5+10) write = lambda x: sys.stdout.write(x+"\n") debug = lambda x: sys.stderr.write(x+"\n") writef = lambda x: print("{:.12f}".format(x)) def runlength(s): if not s: return [] c = s[0] v = 1 n = len(s) l = [] for i in range(1, n): if c==s[i]: v += 1 else: l.append((c,v)) c = s[i] v = 1 l.append((c,v)) return l n = int(input()) a = list(map(int, input().split())) res = runlength(a) l = [] tmp = [0,0] for c,v in res: if c==2: if sum(tmp)>0: l.append(tmp) tmp = [0,0] else: tmp[c] += v if sum(tmp)>0: l.append(tmp) d = {0: 0} for a,b in l: nd = {} for k,v in d.items(): nk = k+a nv = v nd.setdefault(nk,10**12) nd[nk] = min(nd[nk], nv) nk = k-b nv = v+b nd.setdefault(nk,10**12) nd[nk] = min(nd[nk], nv) d = nd if 0 in d: ans = d[0] else: ans = -1 print(ans)