만드는 중입니다

아직 만드는 중이라 바뀔 수 있습니다

마니악

메모리 제한1024 MB

요약
26개 글자의 치환 f를 첫 번째 문자열에 반복 적용해 두 번째 문자열이 되는 횟수를 구합니다. 불가능하면 -1을 출력합니다.
난이도

보통10점 중 5점

유형
문자열, 구현, 수학
정답자
아직 제출이 없습니다

문제

최근 도시에 연쇄 살인범이 나타났다. 셜록은 늘 그렇듯 이 사건을 맡기로 했다. 레스트레이드 경감이 피해자들을 발견했고, 왓슨 박사는 시신마다 라틴 알파벳 기호를 하나씩 찾아냈다. 셜록은 자신의 추리법에 약간의 직관을 더해서, 피해자 모두의 이름이 서로 다른 글자로 시작한다는 것을 알아냈다. 피해자는 모두 26명이었으므로, 라틴 알파벳의 글자마다(피해자 이름의 첫 글자) 그 피해자의 시신에서 발견된 기호를 대응시켰다. 이렇게 셜록은 알파벳 기호들 사이의 대응 관계를 만들었다. 이후 f(c)f(c)는 글자 cc에 대응하는 기호를 뜻한다. 여기서 cc는 라틴 알파벳 글자 중 하나이다.

형사가 수수께끼를 풀 희망을 거의 잃었을 무렵, 그 살인범에게서 편지가 도착했다. 편지에는 길이가 같은 두 줄만 적혀 있었고, 그것을 어떻게 하라는 설명은 없었다. 셜록은 곰곰이 생각한 끝에, 이 수수께끼를 풀려면 다음 값을 구해야 한다는 것을 깨달았다. 첫 번째 줄의 모든 글자를 바꾸는 작업(각 글자 cc를 f(c)f(c)로 바꾼다)을 몇 번 해야 두 번째 줄이 되는지, 그 횟수이다. 셜록은 머리에 쓸데없는 정보를 채우고 싶지 않아서 당신에게 도움을 청했다.

입력

첫 줄에는 26개의 문자가 주어진다. 이 줄의 kk번째 문자는 라틴 알파벳의 kk번째 글자에 대응하는 기호이다.

둘째 줄에는 정수 nn (1≤n≤10000001 \le n \le 1000000)이 주어진다. 이는 살인범이 보낸 문자열의 길이이다.

이어지는 두 줄에는 각각 길이가 nn인 문자열이 주어진다. 문자열은 소문자 라틴 문자로만 이루어져 있다.

라틴 알파벳 글자는 a부터 z까지 1번부터 번호가 매겨진다.

출력

필요한 문자 교체 연산의 횟수를 한 줄에 출력한다.

답이 존재하지 않으면 -1을 출력한다.

힌트

첫 번째 테스트에서 첫 줄은 다음과 같이 바뀐다. 첫 번째 교체 후 abacaba는 bcbdbcb가 된다(a는 b로, b는 c로, c는 d로 바뀐다). 두 번째 교체 후 bcbdbcb는 cdcecdc가 된다(b는 c로, c는 d로, d는 e로 바뀐다). 교체를 두 번 하면 첫 줄이 두 번째 줄이 되므로 답은 2이다.

예제1

  1. 예제 1

    입력
    bcdefghijklmnopqrstuvwwwww
    7
    abacaba
    cdcecdc
    
    예상 출력
    2