#include using namespace std; long long count_inversions(vector& v) { long long inv = 0; int n = v.size(); for(int i = 0; i < n; i++) for(int j = i+1; j < n; j++) if(v[i] > v[j]) inv++; return inv; } 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]); } vector t1 = cur, t2 = need; sort(t1.begin(), t1.end()); sort(t2.begin(), t2.end()); if(t1 != t2) { cout << -1; return 0; } ans += count_inversions(cur); } cout << ans; }