커버스
시간 제한1초메모리 제한2048 MB
빈 문자열에서 시작해 문자열 T를 만드는 최소 비용을 구합니다. P를 붙이는 연산은 0, 문자 하나를 붙이는 연산은 1, 뒤쪽 문자를 지우고 P를 붙이는 연산은 지운 문자 수만큼 듭니다.
문제
두 문자열 와 가 주어진다. 목표는 로 를 만드는 것이다. 빈 문자열에서 시작하며, 아래 세 가지 연산 중 하나를 수행할 수 있다.
- 현재 문자열의 끝에 를 붙인다. 비용은 이다.
- 현재 문자열의 끝에 문자 하나를 붙인다. 비용은 이다.
- 현재 문자열의 끝에서 문자를 삭제한 뒤 를 붙인다. 비용은 삭제한 문자의 개수이다.
예를 들어 aabaabaa, aaba이다. 다음과 같이 로 를 만드는 방법이 두 가지 있다. 여기서 ε는 빈 문자열을 뜻한다.
ε→aaba→aabaa→aabaab→aabaaba→aabaabaaε→aaba→aab→aabaaba→aabaabaa
첫 번째 방법은 를 먼저 붙이고(비용 ), 문자 a, b, a, a 네 개를 붙인다(비용 ). 총비용은 4이다. 두 번째 방법은 를 먼저 붙이고(비용 ), 문자 a 하나를 삭제한 뒤(비용 ) 를 다시 붙이고(비용 ), 마지막으로 문자 a를 붙인다(비용 ). 총비용은 2이다. 두 번째 방법이 최소 비용이다.
와 가 주어졌을 때, 로 를 만드는 최소 비용을 구하는 프로그램을 작성하시오.
입력
첫 줄에 두 정수 과 이 주어진다(, ). 은 의 길이이고, 은 의 길이이다. 둘째 줄에는 가, 셋째 줄에는 가 주어진다. 와 는 모두 영어 소문자로만 이루어져 있다.
출력
한 줄에 로 를 만드는 최소 비용을 출력한다.