Не знаю, в чём проблема, я сразу написал так.
n = int(input())
a = list(map(int, input().split()))
s, d = {}, {}
for q in range(n):
s[a[q]] = q
d[a[q]] = d.get(a[q], 0)+1
q2, ans = 0, n-1
for q1 in d:
while d[q1] > 1:
d[a[q2]] -= 1
q2 += 1
f = set()
for q in range(n):
ans = min(ans, q2-q)
if a[q] in f:
break
f.add(a[q])
q2 = max(q2, s[a[q]]+1, q+1)
print(ans)


