import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.util.Arrays;
import java.util.StringTokenizer;
public class Main {
static BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
static StringTokenizer st;
static boolean flag=true,flag2=true;
static int N,result=0,result2=1,temp;
static String[] arr,arr2,target;
static String toggle(String i) {
if (i.equals("0")) {
return "1";
} else {
return "0";
}
}
public static void main(String args[])throws IOException{
N = Integer.parseInt(br.readLine());
arr = br.readLine().split("");
target = br.readLine().split("");
arr2=arr.clone();
for(int i=0;i<2;i++){
arr2[i] = toggle(arr2[i]);
}
for(int i=1;i<N;i++){
if(i==N-1){
if(!arr[i-1].equals(target[i-1])){
arr[i-1] = toggle(arr[i-1]);
arr[i] = toggle(arr[i]);
result++;
}
}else{
if(!arr[i-1].equals(target[i-1])){
arr[i-1] = toggle(arr[i-1]);
arr[i] = toggle(arr[i]);
arr[i+1] = toggle(arr[i+1]);
result++;
}
}
}
for(int i=1;i<N;i++){
if(i==N-1){
if(!arr2[i-1].equals(target[i-1])){
arr2[i-1] = toggle(arr2[i-1]);
arr2[i] = toggle(arr2[i]);
result2++;
}
}else{
if(!arr2[i-1].equals(target[i-1])){
arr2[i-1] = toggle(arr2[i-1]);
arr2[i] = toggle(arr2[i]);
arr2[i+1] = toggle(arr2[i+1]);
result2++;
}
}
}
flag = Arrays.equals(arr,target);
flag2 = Arrays.equals(arr2,target);
if(flag==false && flag2==false){
System.out.println(-1);
}else if(flag==true && flag2==false){
System.out.println(result);
}else if(flag==false && flag2==true){
System.out.println(result2);
}else {
if(result<=result2){
System.out.println(result);
}else{
System.out.println(result2);
}
}
}
}
참고블로그 : https://staticvoidlife.tistory.com/143
여기 참고블로그에 정말 깔끔하게 설명을 해놓으셔서 덕분에 풀 수 있었다.
첫번째 스위치를 누르는가 안누르는가 2가지 케이스로 문제가 훨씬 쉽게 느껴졌는데, 그 생각까지 도달하기가 어려운것 같다ㅠ
코딩할때도 애를 먹었는데 처음에 ==를 썻다가 계속 안되길래 찾아봤더니 .equal을 써야하더라