#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; // Xét từng nhóm modulo k for (int start = 0; start < k; start++) { vector va, vb; vector pos; for (int i = start; i < n; i += k) { va.push_back(a[i]); vb.push_back(b[i]); pos.push_back(i); } // Kiểm tra multiset có giống nhau không auto sva = va, svb = vb; sort(sva.begin(), sva.end()); sort(svb.begin(), svb.end()); if (sva != svb) { cout << -1; return 0; } // Map giá trị -> vị trí trong vb unordered_map> mp; for (int i = 0; i < (int)vb.size(); i++) { mp[vb[i]].push(i); } int m = va.size(); vector p(m); for (int i = 0; i < m; i++) { p[i] = mp[va[i]].front(); mp[va[i]].pop(); } vector used(m, false); for (int i = 0; i < m; i++) { if (used[i]) continue; int cur = i, len = 0; while (!used[cur]) { used[cur] = true; cur = p[cur]; len++; } if (len > 1) ans += len - 1; } } cout << ans; return 0; }