#include using namespace std; int n, k; int main() { ios::sync_with_stdio(false); cin.tie(nullptr); cin >> n >> k; vector a(n); for (int i = 0; i < n; i++) cin >> a[i]; vector clone = a; sort(clone.begin(), clone.end()); long long ans = 0; for (int r = 0; r < k; r++) { vector cur, target; for (int i = r; i < n; i += k) { cur.push_back(a[i]); target.push_back(clone[i]); } auto c1 = cur, c2 = target; sort(c1.begin(), c1.end()); sort(c2.begin(), c2.end()); if (c1 != c2) { cout << -1; return 0; } int m = cur.size(); unordered_map> pos; for (int i = 0; i < m; i++) { pos[target[i]].push(i); } vector p(m); for (int i = 0; i < m; i++) { p[i] = pos[cur[i]].front(); pos[cur[i]].pop(); } vector vis(m, false); for (int i = 0; i < m; i++) { if (vis[i] || p[i] == i) continue; int len = 0; int u = i; while (!vis[u]) { vis[u] = true; u = p[u]; len++; } ans += len - 1; } } cout << ans; return 0; }