#include <bits/stdc++.h>
using namespace std;
const int N = 100 + 10, K = 1000;
int a[N], n, k, choose[N][N], tedad;
double dp[K + 10][N][N], ans, p_one;
double ehtemal(int i, int l, int r, int tedad) {
  return ((double)(1.0 * tedad * p_one * dp[i][l][r]));
}
void fillchoose() {
  for (int i = 0; i < N; i++) choose[i][0] = 1;
  for (int i = 1; i < N; i++)
    for (int j = 1; j < N; j++)
      choose[i][j] = choose[i - 1][j] + choose[i - 1][j - 1];
}
void debug(int l, int r) { cout << "	added " << l << " and " << r << endl; }
int main() {
  ios::sync_with_stdio(false);
  cin.tie(0);
  cout.tie(0);
  fillchoose();
  cin >> n >> 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++) {
      if (a[j] < a[i])
        dp[0][i][j] = 1.0;
      else
        dp[0][j][i] = 1.0;
    }
  p_one = (long double)(1.0 / (1.0 * (choose[n + 1][2])));
  k = min(k, K);
  for (int i = 1; i <= k; i++) {
    for (int l = 0; l < n; l++) {
      for (int r = 0; r < n; r++) {
        if (l == r) {
          dp[i][l][r] = 0;
          continue;
        }
        if (l > r) {
          dp[i][l][r] = 1 - dp[i][r][l];
          continue;
        }
        for (int newl = 0; newl <= l; newl++) {
          tedad = min(newl + 1, r - l);
          dp[i][l][r] += (ehtemal(i - 1, newl, r, tedad));
        }
        for (int newl = l + 1; newl < r; newl++) {
          tedad = min(l + 1, r - newl);
          dp[i][l][r] += (ehtemal(i - 1, newl, r, tedad));
        }
        for (int newr = r; newr < n; newr++) {
          tedad = min(n - newr, r - l);
          dp[i][l][r] += (ehtemal(i - 1, l, newr, tedad));
        }
        for (int newr = r - 1; newr > l; newr--) {
          tedad = min(n - r, newr - l);
          dp[i][l][r] += (ehtemal(i - 1, l, newr, tedad));
        }
        for (int newr = 0; newr < l; newr++) {
          int newl = newr + (r - l);
          tedad = min(newr + 1, n - r);
          dp[i][l][r] += (ehtemal(i - 1, newl, newr, tedad));
        }
        for (int newl = r + 1; newl < n; newl++) {
          int newr = newl - (r - l);
          tedad = min(n - newl, l + 1);
          dp[i][l][r] += (ehtemal(i - 1, newl, newr, tedad));
        }
        tedad = min(l + 1, n - r);
        dp[i][l][r] += (ehtemal(i - 1, r, l, tedad));
        tedad = choose[l + 1][2] + choose[r - l][2] + choose[n - r][2];
        dp[i][l][r] += (ehtemal(i - 1, l, r, tedad));
      }
    }
  }
  cout << fixed << setprecision(11);
  for (int i = 0; i < n; i++)
    for (int j = i + 1; j < n; j++) ans += dp[k][i][j];
  cout << ans << endl;
  return 0;
}
