import
java.util.*;
public
class
GFG {
static
int
count_operations(String s1, String s2)
{
int
n = s1.length();
int
cnt10 =
0
, cnt01 =
0
;
for
(
int
i =
0
; i < n; i++) {
if
(s1.charAt(i) != s2.charAt(i)) {
if
(s1.charAt(i) ==
'0'
)
cnt01++;
else
cnt10++;
}
}
if
(cnt01 == cnt10)
return
2
* cnt01;
return
-
1
;
}
static
int
modify_string(String s1, String s2,
char
c)
{
int
n = s1.length();
char
[] str1 = s1.toCharArray();
char
[] str2 = s2.toCharArray();
int
idx = -
1
;
for
(
int
i =
0
; i < n; i++) {
if
(str1[i] ==
'1'
&& str2[i] == c) {
idx = i;
break
;
}
}
if
(idx == -
1
)
return
0
;
for
(
int
i =
0
; i < n; i++) {
if
(i == idx)
continue
;
if
(str1[i] ==
'1'
)
str1[i] =
'0'
;
else
str1[i] =
'1'
;
}
s1 =
new
String(str1);
s2 =
new
String(str2);
return
1
;
}
static
int
find_min_operations(String s1, String s2)
{
int
res = Integer.MAX_VALUE;
int
ops1 = count_operations(s1, s2);
ops1 /=
2
;
if
(ops1 != -
1
)
res = Math.min(res, ops1);
String a = s1, b = s2;
if
(modify_string(a, b,
'1'
) >
0
) {
int
ops2 = count_operations(a, b);
if
(ops2 != -
1
)
res = Math.min(res,
1
+ ops2);
}
a = s1;
b = s2;
if
(modify_string(a, b,
'0'
) >
0
) {
int
ops3 = count_operations(a, b);
if
(ops3 != -
1
)
res = Math.min(res,
1
+ ops3);
}
if
(res == Integer.MAX_VALUE)
return
-
1
;
else
return
res;
}
public
static
void
main(String args[])
{
String s1 =
"100010111"
;
String s2 =
"101101100"
;
System.out.println(find_min_operations(s1, s2));
}
}