시간 제한 | 메모리 제한 | 제출 | 정답 | 맞힌 사람 | 정답 비율 |
---|---|---|---|---|---|
2 초 | 128 MB | 211 | 23 | 19 | 19.388% |
세준이는 어떤 문자열의 부분 문자열을 뒤집는 연산을 할 수 있다. 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을 출력한다.
1100 0110
1
111000 101010
2
0 1
-1
10101 10101
0
111000111000 001100110011
4