import
java.util.ArrayList;
import
java.util.Collections;
import
java.util.List;
public
class
MinimumSwaps {
public
static
int
minimumSwaps(
int
n, List<Integer> P) {
if
(n ==
2
) {
return
0
;
}
List<Integer> p1 =
new
ArrayList<>();
List<Integer> p2 =
new
ArrayList<>();
p1.add(n);
p2.add(
1
);
for
(
int
i =
1
; i < n; ++i) {
if
(i %
2
==
1
) {
p1.add(n +
1
- p1.get(p1.size() -
1
));
p2.add(n +
1
- p2.get(p2.size() -
1
));
}
else
{
p1.add(n - p1.get(p1.size() -
1
));
p2.add(n +
2
- p2.get(p2.size() -
1
));
}
}
int
ans = swaps(p1, P);
Collections.reverse(p1);
ans = Math.min(ans, swaps(p1, P));
ans = Math.min(ans, swaps(p2, P));
Collections.reverse(p2);
ans = Math.min(ans, swaps(p2, P));
return
ans;
}
public
static
int
swaps(List<Integer> b, List<Integer> a) {
int
n = a.size();
List<Integer> pos =
new
ArrayList<>(Collections.nCopies(n +
1
,
0
));
for
(
int
i =
0
; i < n; ++i) {
pos.set(a.get(i), i);
}
int
ans =
0
;
for
(
int
i =
0
; i < n; ++i) {
if
(!a.get(i).equals(b.get(i))) {
int
j = pos.get(b.get(i));
Collections.swap(a, i, j);
Collections.swap(pos, a.get(i), a.get(j));
++ans;
}
}
return
ans;
}
public
static
void
main(String[] args) {
int
n =
2
;
List<Integer> P =
new
ArrayList<>();
P.add(
1
);
P.add(
2
);
System.out.println(minimumSwaps(n, P));
}
}