#include using namespace std; using ll = long long; int main() { ios::sync_with_stdio(0); cin.tie(0); int n; cin >> n; vector a(n); for (int i = 0; i < n; i++) cin >> a[i]; int k; cin >> k; vector b(n); for (int i=0;i vitri; for (int i = 0; i < n; i++) { vitri[b[i]] = i; } for (int i = 0; i < n; i++) { if ((i % k) != (vitri[a[i]] % k)) { cout << "NO SOLUTION"; return 0; } } ll ans = 0; vector vis(n, false); for (int s = 0; s < k; s++) { vector id1; for (int i = s; i < n; i += k) { id1.push_back(i); } int sz = id1.size(); unordered_map id; for (int i = 0; i < sz; i++) { id[id1[i]] = i; } vector p(sz); for (int i = 0; i < sz; i++) { p[i] = id[vitri[a[id1[i]]]]; } vector used(sz, false); for (int i = 0; i < sz; i++) { if (used[i]) continue; int cur = i, len = 0; while (!used[cur]) { used[cur] = true; cur = p[cur]; len++; } if (len > 1) ans += len - 1; } } cout << ans; return 0; }