f(X)=A+X+B+X+C를 S에 K번 적용한 문자열에서 F가 부분 문자열로 나타나는 횟수를 10억 7로 나눈 나머지를 구한다.
문자열 XXX를 받아 f(X)=A+X+B+X+Cf(X) = A + X + B + X + Cf(X)=A+X+B+X+C를 돌려주는 함수 fff가 있다. 여기서 +++는 문자열 연결 연산이고, AAA, BBB, CCC는 비어 있지 않은 상수 문자열이다.
함수를 여러 번 적용한 결과는 f1(X)=f(X)f^1(X) = f(X)f1(X)=f(X), fK(X)=f(fK−1(X))f^K(X) = f(f^{K-1}(X))fK(X)=f(fK−1(X))로 정의한다.
문자열 AAA, BBB, CCC, SSS, FFF와 정수 KKK가 주어진다. fK(S)f^K(S)fK(S)에 FFF가 부분 문자열로 몇 번 등장하는지 구하는 프로그램을 작성하시오. 시작 위치가 다르면 서로 겹치더라도 각각 센다.
첫째 줄에 AAA, BBB, CCC, SSS, FFF, KKK가 공백으로 구분되어 주어진다. AAA, BBB, CCC, SSS, FFF는 길이가 1 이상 50 이하이고 알파벳 소문자로만 이루어진 문자열이다. KKK는 10,000,000보다 작거나 같은 자연수이다.
첫째 줄에 fK(S)f^K(S)fK(S)에 FFF가 부분 문자열로 등장하는 횟수를 1,000,000,007로 나눈 나머지를 출력한다.