피보나치 단어

아직 제출이 없습니다시간 제한1초메모리 제한128 MB

문제

피보나치 단어는 피보나치 수와 비슷한 방식으로 정의된다.

FIB1=b,FIB2=a,FIBk+2=FIBk+1FIBk(k1)\mathrm{FIB}_1 = \texttt{b}, \quad \mathrm{FIB}_2 = \texttt{a}, \quad \mathrm{FIB}_{k+2} = \mathrm{FIB}_{k+1} \oplus \mathrm{FIB}_k \quad (k \ge 1)

여기서 \oplus는 두 단어를 이어 붙이는 연산(연결, concatenation)을 뜻한다.

따라서 처음 몇 개의 피보나치 단어는 FIB3=ab\mathrm{FIB}_3 = \texttt{ab}, FIB4=aba\mathrm{FIB}_4 = \texttt{aba}, FIB5=abaab\mathrm{FIB}_5 = \texttt{abaab}, FIB6=abaababa\mathrm{FIB}_6 = \texttt{abaababa} 이다.

문자 ab로만 이루어진 패턴 단어와 정수 nn이 주어진다. 이 패턴이 nn번째 피보나치 단어 FIBn\mathrm{FIB}_n 안에서 연속한 부분 문자열로 몇 번 나타나는지 세어라. 두 등장은 서로 겹칠 수 있으므로, 패턴과 일치하는 모든 시작 위치를 각각 하나로 센다.

입력

첫째 줄에 패턴 단어가 주어진다. 이 단어는 a 또는 b로 이루어져 있으며 길이는 11 이상 3030 이하이다.

둘째 줄에 양의 정수 nn이 주어진다. (n200n \le 200)

출력

패턴 단어가 FIBn\mathrm{FIB}_n 안에 나타나는 횟수를 음이 아닌 정수 하나로 출력한다. 답은 매우 클 수 있으며 64비트 정수 범위를 넘을 수 있다.