import typing class FenwickTree: def __init__(self, n: int = 0) -> None: self._n = n self.data = [0] * n def add(self, p: int, x: typing.Any) -> None: assert 0 <= p < self._n p += 1 while p <= self._n: self.data[p - 1] += x p += p & -p def sum(self, left: int, right: int) -> typing.Any: assert 0 <= left <= right <= self._n return self._sum(right) - self._sum(left) def _sum(self, r: int) -> typing.Any: s = 0 while r > 0: s += self.data[r - 1] r -= r & -r return s # リストを受けて転倒数を出す関数 def count_inversion(li:list): # リストと要素数 res = 0 limit = max(li) ft = FenwickTree(limit + 1) # 一番右のしきり・・limit + 1 for num in li: # 自分より右側にいる出席者数をカウントする(区間和) res += ft.sum(num + 1, limit + 1) # 自分も席に座る ft.add(num, 1) return res def main(): N, K = map(int, input().split()) A = list(map(int, input().split())) data = [list() for _ in range(K)] for i, a in enumerate(A): data[i%K].append(a) B = [0]*N ans = 0 for i in range(K): # data[i] の転倒数 if data[i]: ans += count_inversion(data[i]) data[i].sort() pos = 0 for j in range(i, N, K): B[j] = data[i][pos] pos += 1 A.sort() if A == B: print(ans) else: print(-1) if __name__ == "__main__": main()