import java.io.*;
import java.util.*;
import java.lang.Math;
class Solution {
static class Fenwick {
int n;
int[] bit;
Fenwick(int n) {
this.n = n;
bit = new int[n+1];
}
void add(int idx, int delta) {
for (; idx <= n; idx += idx & -idx) bit[idx] += delta;
}
int sum(int idx) {
int s = 0;
for (; idx > 0; idx -= idx & -idx) s += bit[idx];
return s;
}
int rangeSum(int l, int r) {
if (r < l) return 0;
return sum(r) - sum(l-1);
}
}
public static int permInv(int n, List<Integer> A, int k) {
int[] arr = new int[n];
for (int i = 0; i < n; ++i) arr[i] = A.get(i);
Fenwick fwAll = new Fenwick(n);
long initialInv = 0;
for (int i = 0; i < n; ++i) {
int v = arr[i];
int leq = fwAll.sum(v);
int greaterBefore = i - leq;
initialInv += greaterBefore;
fwAll.add(v, 1);
}
if (k <= 1) return (int) initialInv;
long pairsInside = (long)k * (k - 1) / 2;
Fenwick fwWindow = new Fenwick(n);
long windowInv = 0;
int currentWindowSize = 0;
for (int j = 0; j < k; ++j) {
int v = arr[j];
int leq = fwWindow.sum(v);
int greater = currentWindowSize - leq;
windowInv += greater;
fwWindow.add(v, 1);
currentWindowSize++;
}
long best
= Math.
min(initialInv, initialInv
+ pairsInside
- 2 * windowInv
);
for (int i = 1; i <= n - k; ++i) {
int leftVal = arr[i-1];
int lessThanLeft = fwWindow.sum(leftVal - 1);
windowInv -= lessThanLeft;
fwWindow.add(leftVal, -1);
currentWindowSize--;
int newVal = arr[i + k - 1];
int leqNew = fwWindow.sum(newVal);
int greaterNew = currentWindowSize - leqNew;
windowInv += greaterNew;
fwWindow.add(newVal, 1);
currentWindowSize++;
long newTotal = initialInv + pairsInside - 2 * windowInv;
if (newTotal < best) best = newTotal;
}
return (int) best;
}
public static void main
(String[] args
) { Scanner scan
= new Scanner
(System.
in); int n
= Integer.
parseInt(scan.
nextLine().
trim()); List<Integer> A = new ArrayList<>(n);
for (int j = 0; j < n; j++) {
A.
add(Integer.
parseInt(scan.
nextLine().
trim())); }
int k
= Integer.
parseInt(scan.
nextLine().
trim()); int result = permInv(n, A, k);
}
}