Герой Аркадий находится на узкой полоске земли, разделенной на *n* зон, пронумерованных от 1 до *n*. Из *i*-й зоны можно пройти лишь в (*i* - 1)-ю зону и в (*i* + 1)-ю зону, если они существуют. При этом между каждой парой соседних зон находятся пограничные врата, которые могут быть разных цветов, цвет врат между *i*-й и (*i* + 1)-й зоной равен *g*<sub class="lower-index">*i*</sub>.

Аркадий может пройти пограничные врата некоторого цвета, только если он перед этим побывал в одном из шатров хранителей ключей этого цвета и взял ключ. В каждой зоне находится ровно один шатер хранителя ключей некоторого цвета, цвет шатра в *i*-й зоне равен *k*<sub class="lower-index">*i*</sub>. После посещения шатра определенного цвета Аркадий может неограниченное число раз проходить через любые врата этого цвета.

На проход через одни врата Аркадий тратит один ход, на посещение шатра и другие перемещения ходы не требуются. За какое минимальное число ходов Аркадий может попасть из зоны *a* в зону *b*, если изначально у него нет никаких ключей?
Первая строка содержит три целых числа *n*, *a*, *b* (2 ≤ *n* ≤ 100 000, 1 ≤ *a*, *b* ≤ *n*, *a* ≠ *b*) — число зон, номер начальной зоны и номер конечной зоны, соответственно.

Вторая строка содержит *n* - 1 целое число *g*<sub class="lower-index">1</sub>, *g*<sub class="lower-index">2</sub>, ..., *g*<sub class="lower-index">*n* - 1</sub> (1 ≤ *g*<sub class="lower-index">*i*</sub> ≤ 100 000), где *g*<sub class="lower-index">*i*</sub> означает цвет пограничных врат между зонами *i* и *i* + 1.

Третья строка содержит *n* целых чисел *k*<sub class="lower-index">1</sub>, *k*<sub class="lower-index">2</sub>, ..., *k*<sub class="lower-index">*n*</sub> (1 ≤ *k*<sub class="lower-index">*i*</sub> ≤ 100 000), где *k*<sub class="lower-index">*i*</sub> означает цвет шатра хранителя ключей в *i*-й зоне.
В первом примере, чтобы попасть из зоны 4 в зону 1, Аркадию нужно сначала взять ключ цвета 1, пройти в зону 3, там взять ключ цвета 2 и пройти обратно в зону 4 и затем в зону 5, взять там ключ цвета 3 и дойти до зоны 1 за четыре хода.

Во втором примере Аркадий может дойти лишь до четвертой зоны, так как шатров хранителей ключей цвета 1 нет совсем.
from itertools import islice

n, a, b = map(int, input().split())
g = [int(i) for i in input().split()]
k = [int(i) for i in input().split()]
a, b = a - 1, b - 1

#find na

if (not set(g).issubset(set(k))):
    print('-1')
else:
    current = a
    # print(current)
    moves = 0
    needed_keys = set(g[a:b] if a < b else g[b + 1:a + 1])
    got_keys = set([k[a]])
    if (a < b):
        # Check left border for [n_a, b]
        n_a_prev = a + 1
        n_a = a
        while (n_a != n_a_prev):
            n_a_prev = n_a
            for i in range(a):
                if k[i] in needed_keys:
                    n_a = i
                    break
            needed_keys = set(islice(g, n_a, b))
        remain_keys_left = set(islice(k, n_a, a)) - got_keys
        remain_keys_right = set(islice(k, a + 1, b)) - got_keys
        while current != b:
            prev_moves = moves
            while ((current - 1) >= 0) and (g[current - 1] in got_keys) and (len(remain_keys_left)):
                moves += 1
                current -= 1
                got_keys.add(k[current])
                remain_keys_left = remain_keys_left - got_keys
                # print(f'got_keys={got_keys}, remain_keys_right={remain_keys_right}, remain_keys_left={remain_keys_left}')
            while (current != len(g)) and (g[current] in got_keys) and len(remain_keys_right):
                moves += 1
                current += 1
                # print(current)
                got_keys.add(k[current])
                # print(got_keys)
                remain_keys_right = remain_keys_right - got_keys
                # print(f'got_keys={got_keys}, remain_keys_right={remain_keys_right}, remain_keys_left={remain_keys_left}')
            if (needed_keys.issubset(got_keys)):
                while (current != b):
                    moves += 1
                    current += 1
                    # print(current)
            if (prev_moves == moves):
                moves = -1
                break
    elif (a > b):
        n_a_prev = a - 1
        n_a = a
        while (n_a != n_a_prev):
            n_a_prev = n_a
            for i in range(len(k) - 1, a, -1):
                if k[i] in needed_keys:
                    n_a = i
                    break
                needed_keys = set(islice(g, b, n_a + 1))
        remain_keys_left = set(islice(k, b + 1, a)) - got_keys
        remain_keys_right = set(islice(k, a, n_a + 1)) - got_keys
        while current != b:
            prev_moves = moves
            while ((current != len(g)) and g[current] in got_keys) and bool(len(remain_keys_right)):
                moves += 1
                current += 1
                # print(current)
                got_keys.add(k[current])
                # print(f'got_keys={got_keys}, remain_keys_right={remain_keys_right}, remain_keys_left={remain_keys_left}')
            while ((current - 1) >= 0 and (g[current - 1] in got_keys) and bool(len(remain_keys_left))):
                moves += 1
                current -= 1
                # print(current)
                got_keys.add(k[current])
                remain_keys_left = remain_keys_left - got_keys
                # print(f'got_keys={got_keys}, remain_keys_right={remain_keys_right}, remain_keys_left={remain_keys_left}')
            if (needed_keys.issubset(got_keys)):
                while (current != b):
                    moves += 1
                    current -= 1
                    # print(current)
            if (prev_moves == moves):
                moves = -1
                break
    print(moves)
