from bisect import bisect_left



N = int(eval(input()))

*A, = list(map(int, input().split()))



L = [A[0]]

for a in A[1:]:

    if a > L[-1]:

        # Lの末尾よりaが大きければ増加部分列を延長できる

        L.append(a)

    else:

        # そうでなければ、「aより小さい最大要素の次」をaにする

        # 該当位置は、二分探索で特定できる

        L[bisect_left(L, a)] = a



ret = N + 1

for cnt, l_ in enumerate(L, 1):

    if l_ != cnt:

        break

    ret = cnt



print((N - ret))

N = int(eval(input()))

*A, = list(map(int, input().split()))



tar = 1

for a_ in A:

    if a_ == tar:

        tar += 1

tar -= 1



if tar:

    print((N - tar))

else:

    print((-1))

from bisect import bisect_left

N = int(eval(input()))
(*A,) = list(map(int, input().split()))
L = [A[0]]
for a in A[1:]:
    if a > L[-1]:
        # Lの末尾よりaが大きければ増加部分列を延長できる
        L.append(a)
    else:
        # そうでなければ、「aより小さい最大要素の次」をaにする
        # 該当位置は、二分探索で特定できる
        L[bisect_left(L, a)] = a
ret = N + 1
for cnt, l_ in enumerate(L, 1):
    if l_ != cnt:
        break
    ret = cnt
print((N - ret))

N = int(eval(input()))
(*A,) = list(map(int, input().split()))
tar = 1
for a_ in A:
    if a_ == tar:
        tar += 1
tar -= 1
if tar:
    print((N - tar))
else:
    print((-1))

-from bisect import bisect_left - -L = [A[0]] -for a in A[1:]: -    if a > L[-1]: -        # Lの末尾よりaが大きければ増加部分列を延長できる -        L.append(a) -    else: -        # そうでなければ、「aより小さい最大要素の次」をaにする -        # 該当位置は、二分探索で特定できる -        L[bisect_left(L, a)] = a -ret = N + 1 -for cnt, l_ in enumerate(L, 1): -    if l_ != cnt: -        break -    ret = cnt -print((N - ret)) +tar = 1 +for a_ in A: +    if a_ == tar: +        tar += 1 +tar -= 1 +if tar: +    print((N - tar)) +else: +    print((-1))