시간 제한메모리 제한제출정답맞힌 사람정답 비율
2 초 128 MB309322319.828%

문제

세준이는 어떤 문자열의 부분 문자열을 뒤집는 연산을 할 수 있다. r(i,j)는 어떤 문자열의 I번부터 j번 문자열 까지를 뒤집는 연산이다. (0번부터 시작한다.)

어떤 문자열 A를 B로 바꾸는데 사용할 수 있는 연산은 r(i,j)만 있는데, 이 연산을 사용한 순서대로 나타낸 걸 뒤집기 수열이라고 한다.

뒤집기 수열은 다음 조건을 만족해야 한다. 뒤집기 수열이 다음과 같이 길이가 m이고 수열의 각 원소가 첫 번째 부터 r(i1,j1), r(i2,j2), ... r(im,jm) 이라면, i1 ≤ i2 ≤ ... ≤ im이고, j1 ≥ j2 ≥ ... ≥ jm인 조건을 만족해야 한다.

문자열 A와 B가 주어졌을 때, A를 B로 바꾸기 위한 뒤집기 연산의 최소 회수를 출력하는 프로그램을 작성하시오.

예를 들어 A = 1100이고, B=0110이면, r(0,2)를 이용하면 0110을 만들 수 있다.

입력

첫째 줄에 문자열 A와 둘째 줄에 문자열 B가 주어진다. A와 B의 길이는 50보다 작거나 같고, 두 문자열의 길이는 같다. 또, 0과 1로만 이루어져 있다.

출력

첫째 줄에 최소 회수를 출력한다. 만약 바꿀 수 없으면 -1을 출력한다.

예제 입력 1

1100
0110

예제 출력 1

1

예제 입력 2

111000
101010

예제 출력 2

2

예제 입력 3

0
1

예제 출력 3

-1

예제 입력 4

10101
10101

예제 출력 4

0

예제 입력 5

111000111000
001100110011

예제 출력 5

4

출처

  • 문제를 번역한 사람: baekjoon
  • 문제의 오타를 찾은 사람: lmn1349