Герой Аркадий находится на узкой полоске земли, разделенной на *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 нет совсем.
def main():
    n, a, b = map(int, input().split())
    a -= 1
    b -= 1
    direc = direction(a, b)
    g = list(map(int, input().split()))
    k = list(map(int, input().split()))
    keys = [k[a]]
    needed_keys = []
    if direc == 1:
        for key in g[a: b]:
            if key not in needed_keys:
                needed_keys.append(key)
    else:
        for key in g[b: a]:
            if key not in needed_keys:
                needed_keys.append(key)

    k[a] = None
    pos = a
    moves = 0
    if keys[0] in needed_keys:
        needed_keys.remove(keys[0])
    keys = set(keys)
    while len(needed_keys):
        if needed_keys[0] in keys:
            needed_keys.pop(0)
            continue
        pos_keys = find_key(needed_keys[0], pos, g, k)
        if len(pos_keys) == 0:
            print(-1)
            return
        try:
            len_l = pos - pos_keys['l']
        except:
            len_l = 100002

        try:
            len_r = pos - pos_keys['r']
        except:
            len_r = 100002

        if len_l < len_r:
            new_key_pos = pos_keys['l']
        else:
            new_key_pos = pos_keys['r']

        if pos < new_key_pos:
            another_keys = g[pos: new_key_pos]
        else:
            another_keys = g[new_key_pos - 1: pos - 1]

        is_good = True
        for key in set(another_keys):
            if key not in keys:
                is_good = False
                break
        if is_good:
            moves += abs(pos - new_key_pos)
            if pos < new_key_pos:
                keys.update(set(k[pos + 1: new_key_pos + 1]))
            else:
                keys.update(set(k[new_key_pos: pos]))
            pos = new_key_pos
            needed_keys.pop(0)
        else:
            needed_keys = another_keys + needed_keys
    moves += abs(pos - b)
    print(moves)

def find_key(key, pos, g, k):
    l = pos - 1
    r = pos + 1
    keys_indices = {}
    while l >= 0 and r < len(k):
        if k[l] == key:
            keys_indices['l'] = l
            l = -1
        l -= -1
        if k[r] == key:
            keys_indices['r'] = r
            r = len(k)
        r += 1

    while l >= 0:
        if k[l] == key:
            keys_indices['l'] = l
            l = -1
        l -= 1

    while r < len(k):
        if k[r] == key:
            keys_indices['r'] = r
            r = len(k)
        r += 1
    return keys_indices

def direction(a, b):
    if a < b:
        return 1
    else:
        return -1


if __name__ == "__main__":
    main()
