#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]; // Mảng đã sắp xếp vector b = a; sort(b.begin(), b.end()); long long ans = 0; // Xử lý từng nhóm for (int start = 0; start < k; start++) { vector cur, need; vector pos; for (int i = start; i < n; i += k) { cur.push_back(a[i]); need.push_back(b[i]); } // Nếu tập giá trị khác nhau → không thể auto tmp1 = cur, tmp2 = need; sort(tmp1.begin(), tmp1.end()); sort(tmp2.begin(), tmp2.end()); if (tmp1 != tmp2) { cout << -1; return 0; } int m = cur.size(); unordered_map where; for (int i = 0; i < m; i++) where[need[i]] = i; vector used(m, false); for (int i = 0; i < m; i++) { if (used[i]) continue; int j = i, cnt = 0; while (!used[j]) { used[j] = true; j = where[cur[j]]; cnt++; } if (cnt > 1) ans += cnt - 1; } } cout << ans; return 0; }