#include <bits/stdc++.h>
const int MAX_N = 30;
long double f[MAX_N + 5][MAX_N + 5], ff[MAX_N + 5][MAX_N + 5], p;
int n, m;
int data[MAX_N + 10];
int gp[MAX_N + 10][MAX_N + 10][MAX_N + 10];
void change() {
  for (int i = 1; i <= n; i++)
    for (int j = i + 1; j <= n; j++) ff[i][j] = 0.0;
  for (int L = 1; L <= n; L++)
    for (int R = L; R <= n; R++) {
      for (int i = 1; i <= n; i++)
        for (int j = i + 1; j <= n; j++) {
          int ii = gp[L][R][i];
          int jj = gp[L][R][j];
          if (ii < jj)
            ff[ii][jj] += f[i][j] * p;
          else
            ff[jj][ii] += (1.0 - f[i][j]) * p;
        }
    }
  for (int i = 1; i <= n; i++)
    for (int j = i + 1; j <= n; j++) f[i][j] = ff[i][j];
}
int main() {
  scanf("%d%d", &n, &m);
  for (int L = 1; L <= n; L++)
    for (int R = L; R <= n; R++)
      for (int i = 1; i <= n; i++) {
        if (i < L || i > R)
          gp[L][R][i] = i;
        else
          gp[L][R][i] = R - (i - L);
      }
  p = 2.0 / n / (n + 1);
  for (int i = 1; i <= n; i++) scanf("%d", data + i);
  for (int i = 1; i <= n; i++)
    for (int j = i + 1; j <= n; j++) f[i][j] = data[i] > data[j];
  for (int i = 0; i < m; i++) change();
  long double ans = 0.0;
  for (int i = 1; i <= n; i++)
    for (int j = i + 1; j <= n; j++) ans += f[i][j];
  printf("%.15f\n", (double)ans);
  return 0;
}
