from itertools import*
D=lambda d,n,K,U:{**{a:b for a in d if(b:=[j for j in d[a]if~-(j in K)])},n:[*K,*U]}
N=len
def P(n,d,r,F):
U=d.get(n,[]);d={i:d[i]for i in d if i-n};k=[[],[]]
for i in d:
if i<n or N(d[i])-i:k[i>F]+=d[i]
if N(k[1])>=r:yield D(d,n,K:=k[1][:r],U),K;return
for K in combinations(k[0]+k[1],r):
if[]==k[1]or any(j in K for j in k[1]):yield D(d,n,K,U),K
def f(a):
d,I={},0
for i in a:d[i]=d.get(i,[])+[I];I+=1
q=[(N(a),)*2+(d,0)];M=-1
while q:
n,A,d,C=q.pop(0)
if all(i==N(d[i])for i in d):M=[C,M][C>M>-1]
elif n:
if N(L:=d.get(n,[]))-n:
for u,i in P(n,d,r:=n-N(L),F:=A-n):q+=[(F,A-n,u,C+N(i))]*(M>C+N(i)or M<0)
q+=(n-1,A,d,C),
return M
print(f([*map(int, '0'.split())]))
print(f([*map(int, '1 2 3'.split())]))
print(f([*map(int, '5 5 5 5 5'.split())]))
print(f([*map(int, '23 7 4 8'.split())]))
print(f([*map(int, '100 100 100 6'.split())]))
print(f([*map(int, '5 5 5 5 5 5'.split())]))
print(f([*map(int, '1 6 23 6 9 23 1 1 6'.split())]))
print(f([*map(int, '5 5 8 8 4 4 1 3 3'.split())]))
ZnJvbSBpdGVydG9vbHMgaW1wb3J0KgpEPWxhbWJkYSBkLG4sSyxVOnsqKnthOmIgZm9yIGEgaW4gZCBpZihiOj1baiBmb3IgaiBpbiBkW2FdaWZ+LShqIGluIEspXSl9LG46WypLLCpVXX0KTj1sZW4KZGVmIFAobixkLHIsRik6CiBVPWQuZ2V0KG4sW10pO2Q9e2k6ZFtpXWZvciBpIGluIGQgaWYgaS1ufTtrPVtbXSxbXV0KIGZvciBpIGluIGQ6CiAgaWYgaTxuIG9yIE4oZFtpXSktaTprW2k+Rl0rPWRbaV0KIGlmIE4oa1sxXSk+PXI6eWllbGQgRChkLG4sSzo9a1sxXVs6cl0sVSksSztyZXR1cm4KIGZvciBLIGluIGNvbWJpbmF0aW9ucyhrWzBdK2tbMV0scik6CiAgaWZbXT09a1sxXW9yIGFueShqIGluIEsgZm9yIGogaW4ga1sxXSk6eWllbGQgRChkLG4sSyxVKSxLCmRlZiBmKGEpOgogZCxJPXt9LDAKIGZvciBpIGluIGE6ZFtpXT1kLmdldChpLFtdKStbSV07SSs9MQogcT1bKE4oYSksKSoyKyhkLDApXTtNPS0xCiB3aGlsZSBxOgogIG4sQSxkLEM9cS5wb3AoMCkKICBpZiBhbGwoaT09TihkW2ldKWZvciBpIGluIGQpOk09W0MsTV1bQz5NPi0xXQogIGVsaWYgbjoKICAgaWYgTihMOj1kLmdldChuLFtdKSktbjoKICAgIGZvciB1LGkgaW4gUChuLGQscjo9bi1OKEwpLEY6PUEtbik6cSs9WyhGLEEtbix1LEMrTihpKSldKihNPkMrTihpKW9yIE08MCkKICAgcSs9KG4tMSxBLGQsQyksCiByZXR1cm4gTQogCnByaW50KGYoWyptYXAoaW50LCAnMCcuc3BsaXQoKSldKSkKcHJpbnQoZihbKm1hcChpbnQsICcxIDIgMycuc3BsaXQoKSldKSkKcHJpbnQoZihbKm1hcChpbnQsICc1IDUgNSA1IDUnLnNwbGl0KCkpXSkpCnByaW50KGYoWyptYXAoaW50LCAnMjMgNyA0IDgnLnNwbGl0KCkpXSkpCnByaW50KGYoWyptYXAoaW50LCAnMTAwIDEwMCAxMDAgNicuc3BsaXQoKSldKSkKcHJpbnQoZihbKm1hcChpbnQsICc1IDUgNSA1IDUgNScuc3BsaXQoKSldKSkKcHJpbnQoZihbKm1hcChpbnQsICcxIDYgMjMgNiA5IDIzIDEgMSA2Jy5zcGxpdCgpKV0pKQpwcmludChmKFsqbWFwKGludCwgJzUgNSA4IDggNCA0IDEgMyAzJy5zcGxpdCgpKV0pKQ==