import bisect
def f(l):
lis=[1]*len(l)
a=[l[0]]
for i in range(1,len(l)):
if l[i]>a[-1]:
a.append(l[i])
lis[i]=len(a)
else:
p=bisect.bisect_left(a, l[i])
a[p]=l[i]
lis[i]=p+1
return lis
while True:
try:
n=int(input())
s=list(map(int,input().split()))[:n]
left=f(s)
right=f(s[::-1])[::-1]
c=[left[i]+right[i]-1 for i in range(len(s))]
print(n-max(c))
except:
break