2
public int minSwaps(String s) {3
int cntZero = 0, cntOne = 0;4
for (char ch : s.toCharArray()) {5
if (ch == '0') cntZero++;10
if (Math.abs(cntOne - cntZero) > 1) return -1;12
if (cntOne > cntZero) { // one must be at even posotion13
return countSwaps(s, '1');14
} else if (cntOne < cntZero) {15
return countSwaps(s, '0'); // zero must be at even position18
return Math.min(countSwaps(s, '0'), countSwaps(s, '1'));22
private int countSwaps(String s, char start) {23
int wrongPosition = 0;24
for (int i = 0; i < s.length(); i += 2) {25
if (s.charAt(i) != start) wrongPosition++;