#include <bits/stdc++.h>
using namespace std;
template <class T>
void debug(T a, T b) {
  ;
}
template <class T>
void chmin(T& a, const T& b) {
  if (a > b) a = b;
}
template <class T>
void chmax(T& a, const T& b) {
  if (a < b) a = b;
}
namespace std {
template <class S, class T>
ostream& operator<<(ostream& out, const pair<S, T>& a) {
  out << '(' << a.first << ',' << a.second << ')';
  return out;
}
}  // namespace std
long long int readL() {
  long long int res;
  scanf("%I64d", &res);
  return res;
}
void printL(long long int res) { printf("%I64d", res); }
int n, k;
double dp[205][32][32];
int perm[105];
int dest(int l, int r, int j) {
  if (j < l || j >= r) return j;
  return r - 1 - (j - l);
}
int main() {
  cin >> n >> k;
  for (int i = 0; i < (n); ++i) cin >> perm[i], --perm[i];
  for (int i = 0; i < (n); ++i)
    for (int j = 0; j < (n); ++j)
      if (perm[i] < perm[j]) dp[0][i][j] += 1;
  for (int i = 0; i < (k); ++i)
    for (int j = 0; j < (n); ++j)
      for (int j2 = 0; j2 < (n); ++j2)
        if (dp[i][j][j2] > 1e-100) {
          double p = dp[i][j][j2];
          for (int l = 0; l < (n); ++l)
            for (int r = (l + 1); r < (n + 1); ++r) {
              int t1 = dest(l, r, j), t2 = dest(l, r, j2);
              dp[i + 1][t1][t2] += p / n / (n + 1) * 2;
            }
        }
  double res = 0;
  for (int j = 0; j < (n); ++j)
    for (int j2 = 0; j2 < (n); ++j2)
      if (dp[k][j][j2] && j > j2) res += dp[k][j][j2];
  printf("%.10f\n", res);
  return 0;
}
