#include <bits/stdc++.h>
using namespace std;
const int N = 100 + 10, K = 1e3 + 10;
double dp[2][N][N];
int a[N];
int n, k;
double ans;
inline int t(int l1, int r1, int l2, int r2) {
  return min(r1 - l1 + 1, r2 - l2);
}
inline int C2(int x) { return x * (x + 1) / 2; }
int main() {
  ios_base::sync_with_stdio(false), cin.tie(0), cout.tie(0);
  cin >> n >> k;
  k = min(k, K);
  for (int i = 0; i < n; i++) cin >> a[i];
  for (int i = 0; i < n; i++)
    for (int j = i + 1; j < n; j++) dp[0][i][j] = (a[i] > a[j]);
  for (int q = 1; q <= k; q++) {
    int now = q & 1;
    int last = 1 - now;
    for (int i = 0; i < n; i++)
      for (int j = i + 1; j < n; j++) {
        dp[now][i][j] = 0;
        dp[now][i][j] +=
            (C2(i) + C2(j - i - 1) + C2(n - j - 1)) * dp[last][i][j];
        for (int l = 0; l < j; l++)
          dp[now][i][j] += t(0, min(i, l), max(i, l), j) * dp[last][l][j];
        for (int l = i + 1; l < n; l++)
          dp[now][i][j] += t(i + 1, min(l, j), max(l, j), n) * dp[last][i][l];
        for (int l = (j - i); l <= j; l++)
          dp[now][i][j] +=
              t(0, l - (j - i), j, n) * (1 - dp[last][l - (j - i)][l]);
        for (int l = j + 1; l < n; l++)
          dp[now][i][j] += t(0, i, l, n) * (1 - dp[last][l - (j - i)][l]);
        dp[now][i][j] /= C2(n);
      }
  }
  for (int i = 0; i < n; i++)
    for (int j = i + 1; j < n; j++) ans += dp[k & 1][i][j];
  return cout << fixed << setprecision(10) << ans, 0;
}
