f(X) = A + X + B + X + C

f(X)=A+X+B+X+C를 S에 K번 적용한 문자열에서 F가 부분 문자열로 나타나는 횟수를 10억 7로 나눈 나머지를 구한다.

어려움8문자열 매칭동적 계획법행렬문자열아직 제출이 없습니다시간 제한2초메모리 제한512 MB

문제

문자열 XX를 받아 f(X)=A+X+B+X+Cf(X) = A + X + B + X + C를 돌려주는 함수 ff가 있다. 여기서 ++는 문자열 연결 연산이고, AA, BB, CC는 비어 있지 않은 상수 문자열이다.

함수를 여러 번 적용한 결과는 f1(X)=f(X)f^1(X) = f(X), fK(X)=f(fK1(X))f^K(X) = f(f^{K-1}(X))로 정의한다.

문자열 AA, BB, CC, SS, FF와 정수 KK가 주어진다. fK(S)f^K(S)FF가 부분 문자열로 몇 번 등장하는지 구하는 프로그램을 작성하시오. 시작 위치가 다르면 서로 겹치더라도 각각 센다.

입력

첫째 줄에 AA, BB, CC, SS, FF, KK가 공백으로 구분되어 주어진다. AA, BB, CC, SS, FF는 길이가 1 이상 50 이하이고 알파벳 소문자로만 이루어진 문자열이다. KK는 10,000,000보다 작거나 같은 자연수이다.

출력

첫째 줄에 fK(S)f^K(S)FF가 부분 문자열로 등장하는 횟수를 1,000,000,007로 나눈 나머지를 출력한다.