문자열 경로
시간 제한1초메모리 제한128 MB
아래쪽이나 오른쪽으로만 이동해 좌상단에서 우하단까지 이르는 경로 위에 주어진 두 문자열이 각각 나타나게 하는 N행 M열 알파벳 격자 수를 셉니다.
문제
크기의 직사각형 격자가 있다. 각 칸에는 알파벳 대문자가 하나씩 적혀 있다. 행 번호는 위에서 아래로 1번부터 번까지, 열 번호는 왼쪽에서 오른쪽으로 1번부터 번까지 붙어 있다.
에서 출발해 한 번에 아래쪽이나 오른쪽으로 한 칸씩 움직여 에 도착하는 경로를 생각하자. 지나간 칸에 적힌 문자를 지나간 순서대로 빠짐없이 이어 붙이면 길이가 인 문자열이 되고, 이 문자열을 그 격자의 문자열 경로라고 한다. 경로를 어떻게 잡느냐에 따라 격자 하나에서 문자열 경로가 여러 개 나오기도 한다.
길이가 인 서로 다른 문자열 두 개가 주어진다. 두 문자열이 모두 문자열 경로가 되는 직사각형 격자가 몇 개인지 세는 프로그램을 작성하시오. 같은 자리의 칸에 적힌 문자가 하나라도 다르면 두 격자는 서로 다른 것으로 센다. 답이 커질 수 있으므로 1,000,000,009로 나눈 나머지를 출력한다.
입력
첫째 줄에 두 자연수 과 이 주어진다. ()
둘째 줄과 셋째 줄에 알파벳 대문자로 이루어진 길이 인 문자열이 한 줄에 하나씩 주어진다. 두 문자열은 서로 다르다.
출력
주어진 두 문자열이 모두 문자열 경로가 되는 직사각형 격자의 개수를 1,000,000,009로 나눈 나머지를 출력한다.
힌트
, 이고 두 문자열이 ABC와 ADC일 때, 아래 두 격자가 조건을 만족한다.