Cod sursa(job #526424)
#include <cstdio>
#include <algorithm>
using namespace std;
#define N 5010
int n,n1;
int a[N],v[N],last[N];
int rez = N;
inline void citire() {
scanf("%d",&n);
for(int i=1; i<=n; ++i) {
scanf("%d",&a[i]);
v[i] = a[i];
}
}
inline int caut(int x) {
if(v[1]==x)
return 1;
if(v[n1]==x)
return n1;
int p=1,u=n1,m;
while(p<u) {
m = (p+u)>>1;
if(x<=v[m])
u = m;
else
p = m+1;
}
return p;
}
inline void precalc() {
sort(v+1,v+n+1);
n1 = 1;
for(int i=2; i<=n; ++i) {
if(v[i]!=v[n1])
v[++n1] = v[i];
}
for(int i=1; i<=n; ++i)
a[i] = caut(a[i]);
}
inline void rezolva() {
for(int i=1; i<=n; ++i) {
if(a[i]==1)
last[1] = i;
else {
if(last[a[i]-1]!=0)
last[a[i]] = last[a[i]-1];
}
if(a[i]==n1 && last[n1]!=0) {
if(rez>i-last[n1]+1)
rez = i-last[n1]+1;
}
}
}
int main() {
freopen("secv.in","r",stdin);
freopen("secv.out","w",stdout);
citire();
precalc();
rezolva();
if(rez==N)
rez = -1;
printf("%d\n",rez);
return 0;
}