#include #include #include #include #include #include using namespace std; #define fi first #define se second #define TIME (1.0 * clock() / CLOCKS_PER_SEC) const long long mod = 1e9 + 7; const long long mod1 = 1e9 + 4321, mod2 = 1e9 + 321; const long long MAXN = 2e5 + 5; const long long inf = 1e18; //--------------------------------------------------- long long n, k, need[MAXN], real[MAXN], ans; map pos; int main() { cin >> n; for(int i =1 ; i <= n; i ++) { cin >> need[i]; real[i] = need[i]; } cin >> k; sort(need + 1, need + n + 1); for(int i =1 ; i <= n; i++) { pos[need[i]] = i; } for(int i = 1; i <= n; i ++) { if((pos[real[i]] - i) % k != 0) { cout << -1; return 0; } //cout << pos[real[i]] << " " << i << "\n"; ans += abs(pos[real[i]] - i)/k; } cout << ans/2; cerr << "Time elapsed: " << TIME << " s.\n"; return 0; }