입력을 섞기만 하면 된다
면접 대비시간 제한3초메모리 제한512 MB
순열 p로 t를 섞는 연산을 최소 몇 번 적용해야 t가 s의 부분 문자열이 되는지 구합니다. 만들 수 없으면 -1을 출력합니다.
문제
크기가 인 순열 는 부터 까지의 서로 다른 개의 수로 이루어진 수열이다. 는 번째 원소를 뜻한다. 는 를 번 적용한 값, 즉 를 뜻한다. 순열이 사이클이라는 것은 을 만족하는 가장 작은 양의 정수 가 과 같다는 뜻이다.
길이가 인 문자열 , 길이가 인 문자열 , 크기가 인 사이클 순열 가 주어진다. 를 의 부분 문자열로 만들려고 한다. 이를 위해 셔플 연산을 0번 이상 적용할 수 있다. 셔플 연산은 를 로 바꾸며, 모든 ()에 대해 의 번째 글자가 의 번째 글자와 같아야 한다.
문자열 가 의 부분 문자열이라는 것은 을 만족하는 이 존재하여, 모든 ()에 대해 가 성립한다는 뜻이다.
로부터 의 부분 문자열을 얻을 수 있는지 판단하라. 얻을 수 있다면 필요한 셔플 연산 횟수의 최솟값을 구하라.
입력
첫째 줄에 두 정수 과 ()이 주어진다. 둘째 줄에는 적용할 수 있는 순열 이 개의 정수로 주어진다. 다음 두 줄에는 길이 인 문자열 와 길이 인 문자열 가 각각 주어진다. 두 문자열은 모두 영어 소문자로만 이루어져 있다. 입력으로 주어지는 순열은 사이클 순열임이 보장된다.
출력
로부터 의 부분 문자열을 얻을 수 없으면 을 출력한다. 얻을 수 있다면 필요한 셔플 연산 횟수의 최솟값을 출력한다.