만드는 중입니다

아직 만드는 중이라 바뀔 수 있습니다

Flip it and Stick it

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

요약
0과 1로 이루어진 문자열 S와 길이 3 이하의 문자열 T가 주어질 때, S에서 T가 사라지도록 부분 문자열을 뒤집는 최소 횟수를 구합니다. 불가능하면 -1을 출력합니다.
난이도

보통10점 중 7점

유형
문자열, 그리디, 수학
정답자
아직 제출이 없습니다

문제

Finn은 "Flip it and Stick it"이라는 게임을 하고 있으며, 줄여서 FiSi라고 부른다. FiSi는 0과 1로 이루어진 두 문자열 SS와 TT를 가지고 하는 1인용 게임이다. Finn은 다음 형태의 이동을 할 수 있다.

  • SS의 부분 문자열을 골라 뒤집는다. 조각들은 원래 순서대로 다시 이어 붙여서 새로운 SS가 된다.

예를 들어 Finn은 S=S = 101100에서 1부터 세는 인덱스 기준으로 2번째 자리에서 시작하는 부분 문자열 011을 골라, 한 번의 이동으로 S=S = 111000을 만들 수 있다.

Finn은 SS가 TT를 부분 문자열로 포함하지 않으면 이긴다. Finn이 이기기 위한 가장 짧은 이동 순서의 길이를 구하도록 도와라. 이길 수 없다면 그 사실을 알려라.

입력

첫째 줄에 문자열 SS가 주어진다 (1≤∣S∣≤200 0001 \le |S| \le 200\,000). 둘째 줄에 문자열 TT가 주어진다 (1≤∣T∣≤31 \le |T| \le 3).

아래 표에서 T1T_1은 TT의 첫 번째 비트, T2T_2는 두 번째 비트, T3T_3은 세 번째 비트를 가리키며, 왼쪽에서 오른쪽으로 읽는다.

출력

필요한 이동 횟수의 최솟값을 출력한다. 이길 수 없으면 -1을 출력한다.

예제2

  1. 예제 1

    입력
    100110
    10
    
    예상 출력
    2
    
  2. 예제 2

    입력
    000
    00
    
    예상 출력
    -1