N, K = gets.split.map(&:to_i) A = gets.split.map(&:to_i) def inversion_count(arr) cnt = 0 n = arr.size n.times do 0.upto(n - 2) do |i| next if arr[i] <= arr[i + 1] cnt += 1 arr[i], arr[i + 1] = arr[i + 1], arr[i] end end cnt end arrs = [] checked = Array.new(N, false) N.times do |i| next if checked[i] arr = [] i.step(N - 1, K) do |j| checked[j] = true arr << A[j] end arrs << arr end res = Array.new(N) ans = 0 arrs.each_with_index do |arr, s| ans += inversion_count(arr) s.step(N - 1, K) do |i| res[i] = arr.shift end end if res == A.sort puts ans else puts -1 end