아직 만들고 있는 페이지입니다.

이 페이지는 아직 만드는 중입니다. 보이는 내용은 바뀔 수 있습니다.

탈출 수열

시간 제한1초메모리 제한512 MB

요약
a를 aa로, b를 ab로 바꾸는 치환 f에 대해, t가 f를 k번 적용한 문자열 f^k(s)의 연속 부분 문자열이 되는 최소 k를 구한다.
난이도

어려움10점 중 8점

유형
문자열, 분할 정복, 수학, 이분 탐색
정답자
아직 제출이 없습니다

문제

문자 'a'와 'b'로만 이루어진 문자열 ss에 대해, f(s)f(s)를 ss의 모든 'a'를 'aa'로, 'b'를 'ab'로 바꾼 문자열로 정의한다. 예를 들어 f(f("aba")=) = "aaabaa"이다.

문자열 ss와 tt가 주어질 때, tt가 fk(s)f^k(s)의 연속 부분 문자열이 되는 최소 음이 아닌 정수 kk를 구한다.

fkf^k는 다음과 같이 정의한다.

  • f0(s)=sf^0(s) = s
  • fk(s)=fk−1(f(s))f^k(s) = f^{k - 1}(f(s))

입력

첫째 줄과 둘째 줄에 각각 문자열 ss와 tt가 주어진다. (1≤∣s∣,∣t∣≤2⋅1051 \leq |s|, |t| \leq 2 \cdot 10^5)

ss와 tt는 'a'와 'b'로만 이루어져 있다.

출력

최소 kk를 나타내는 정수 하나를 출력한다.

kk가 존재하지 않으면 대신 "-1"을 출력한다.

예제3

  1. 예제 1

    입력
    b
    ab
    
    예상 출력
    1
    
  2. 예제 2

    입력
    ababa
    bab
    
    예상 출력
    0
    
  3. 예제 3

    입력
    a
    b
    
    예상 출력
    -1