#include using namespace std; int main() { ios::sync_with_stdio(false); cin.tie(nullptr); int n, k; cin >> n >> k; vector a(n); for (int i = 0; i < n; i++) cin >> a[i]; vector b = a; sort(b.begin(), b.end()); long long ans = 0; for (int start = 0; start < k; start++) { vector cur, need; for (int i = start; i < n; i += k) { cur.push_back(a[i]); need.push_back(b[i]); } // check khả thi vector tmp1 = cur, tmp2 = need; sort(tmp1.begin(), tmp1.end()); sort(tmp2.begin(), tmp2.end()); if (tmp1 != tmp2) { cout << -1; return 0; } int sz = cur.size(); // mapping value -> queue vị trí trong need unordered_map> pos; for (int i = 0; i < sz; i++) { pos[need[i]].push(i); } vector perm(sz); for (int i = 0; i < sz; i++) { int v = cur[i]; perm[i] = pos[v].front(); pos[v].pop(); } // đếm cycle vector visited(sz, false); for (int i = 0; i < sz; i++) { if (visited[i]) continue; int cycle = 0; int j = i; while (!visited[j]) { visited[j] = true; j = perm[j]; cycle++; } if (cycle > 1) ans += cycle - 1; } } cout << ans; }