#include <bits/stdc++.h>
#pragma comment(linker, "/STACK:666777216")
using namespace std;
const int N = 31;
const int K = 207;
int n, k, a[N];
long double dp[N][N][K];
vector<pair<int, int> > G[N][N];
vector<bool> R[N][N];
void solve() {
  cin >> n >> k;
  for (int i = 0; i < (n); ++i) cin >> a[i];
  int cnt = n * (n + 1) / 2;
  for (int j = 0; j < (n); ++j) {
    for (int i = 0; i < (j); ++i) {
      for (int v = 0; v < (n); ++v) {
        for (int u = 0; u < (v + 1); ++u) {
          int ni, nj;
          if (i >= u && i <= v)
            ni = v - (i - u);
          else
            ni = i;
          if (j >= u && j <= v)
            nj = v - (j - u);
          else
            nj = j;
          if (ni > nj) swap(ni, nj);
          G[i][j].push_back(make_pair(ni, nj));
          R[i][j].push_back(u <= i && j <= v);
        }
      }
    }
  }
  for (int j = 0; j < (n); ++j) {
    for (int i = 0; i < (j); ++i) {
      dp[i][j][0] = (a[i] > a[j]);
    }
  }
  for (int t = 0; t < (k); ++t)
    for (int j = 0; j < (n); ++j)
      for (int i = 0; i < (j); ++i) {
        for (int z = 0; z < ((int)(G[i][j]).size()); ++z) {
          auto p = G[i][j][z];
          if (R[i][j][z])
            dp[p.first][p.second][t + 1] += (1.0 - dp[i][j][t]) / cnt;
          else
            dp[p.first][p.second][t + 1] += dp[i][j][t] / cnt;
        }
      }
  long double ans = 0.0;
  for (int j = 0; j < (n); ++j)
    for (int i = 0; i < (n); ++i) {
      ans += dp[i][j][k];
    }
  cout << fixed << setprecision(12) << ans << endl;
}
int rd() { return (((long long)rand() << 16) ^ rand()) % 1000000000; }
void testGen() {
  FILE *f = fopen("input.txt", "w");
  fclose(f);
}
int main() {
  cerr << fixed;
  cerr.precision(5);
  solve();
  return 0;
}
