import
java.io.*;
import
java.util.*;
public
class
Main {
static
List<Character> getCol(String[] s,
int
index)
{
List<Character> v =
new
ArrayList<>();
for
(
int
i =
0
; i < s.length; i++) {
v.add(s[i].charAt(index));
}
return
v;
}
static
boolean
ispossible(List<Character> row1,
List<Character> row2)
{
Map<Integer, Integer> hash =
new
HashMap<>();
for
(
int
it : row1) {
if
(hash.containsKey(it))
hash.put(it, hash.get(it) +
1
);
else
hash.put(it,
1
);
}
for
(
int
it : row1) {
if
(hash.containsKey(it))
hash.put(it, hash.get(it) -
1
);
else
hash.put(it, -
1
);
}
for
(Map.Entry<Integer, Integer> entry :
hash.entrySet()) {
if
(entry.getValue() !=
0
)
return
false
;
}
return
true
;
}
static
int
getSwaps(List<Character> row1,
List<Character> row2)
{
int
swaps =
0
;
int
i =
0
;
while
(i != row1.size()) {
if
(row1.get(i) != row2.get(i)) {
if
(i == row1.size() -
1
)
Collections.swap(row2, i, i -
1
);
else
Collections.swap(row2, i, i +
1
);
swaps +=
1
;
i =
0
;
}
else
i +=
1
;
}
return
swaps;
}
static
int
totSwap(String[] s)
{
int
ans =
0
;
int
N = s[
0
].length();
for
(
int
i =
0
; i < N /
2
; i++) {
List<Character> row1 = getCol(s, i);
List<Character> row2 = getCol(s, N - i -
1
);
if
(row1 == row2)
continue
;
if
(!ispossible(row1, row2)) {
ans = -
1
;
break
;
}
else
{
ans += getSwaps(row1, row2);
}
}
return
ans;
}
public
static
void
main(String[] args)
{
String[] S = {
"13"
,
"21"
,
"32"
};
System.out.println(totSwap(S));
}
}