주문 합치기
시간 제한3초메모리 제한1024 MB
주어진 주문을 이어 붙이거나 곱하는 연산으로 문자열 t를 만드는 최소 단계 수를 구하고, 불가능하면 -1을 출력합니다.
문제
메이비스는 조너선을 되찾기 위해 아주 강력한 주문을 걸고 싶어 한다. 그녀는 여러 일반 주문을 합쳐서 강한 주문 하나를 만들려고 한다. 모든 주문은 비어 있지 않은 소문자 라틴 문자열이다. 메이비스에게는 개의 일반 주문 가 있다. 또한 그녀가 얻고자 하는 주문 를 알고 있다.
합치기 과정은 다음과 같다. 처음에 메이비스의 문자열 는 빈 문자열이다. 메이비스는 합치기 단계를 여러 번 수행한다. 각 단계에서 일반 주문의 번호 를 고르고 다음 연산 중 하나를 한다.
- : 두 문자열을 이어 붙인다.
- : 문자열을 곱한다. 의 각 문자 뒤마다 를 적는다.
연산은 교환법칙이 성립하지 않는다.
합치기가 끝난 뒤 메이비스는 문자열 를 얻고 싶어 한다. 이를 위해 필요한 단계 수의 최솟값을 구하라.
입력
첫 줄에 메이비스가 얻고자 하는 주문 문자열 ()가 주어진다. 다음 줄에는 메이비스가 가진 일반 주문의 개수 ()가 주어진다. 이어서 개의 줄에 일반 주문 ()가 한 줄에 하나씩 주어진다. 모든 문자열은 비어 있지 않으며 소문자 라틴 문자로만 이루어져 있다.
출력
메이비스가 문자열 를 얻는 데 필요한 최소 단계 수를 한 줄에 출력한다. 불가능하면 을 출력한다.