#动态规划(Dynamic Programming)
# import sys
def left_max(l):
    #计算每个人左边出现的最多人数
    N = len(l)
    dp = [1] * N #若左边没有比自己小的数,则为自己本身,所以初始值为1
    for i in range(N):  #从左往右遍历
        for j in range(i):
            if l[j] < l[i] and dp[i] < dp[j] + 1:
                dp[i] = dp[j] + 1
#             if l[j] < l[i]:
#                 dp[i] = max(dp[i],dp[j] + 1)
    return dp

while True:
    try:
        N = int(input())
        nums = list(map(int, input().split()))

        dp1 = left_max(nums)
        dp2 = left_max(nums[::-1])[::-1]
#         print(dp1)#[1, 1, 1, 2, 2, 1, 3, 4]
#         print(dp2)#[3, 3, 2, 3, 2, 1, 1, 1]
        dp3 = [dp1[i] + dp2[i] for i in range(N)]
        #加起来队列的最大值,就是能够站的最大人数
        print(N - max(dp3) + 1)
    except:
#         print(sys.exc_info())
        break