#include <bits/stdc++.h>
using namespace std;
template <class T>
inline T Abs(const T& x) {
  return x < 0 ? -x : x;
}
template <class T>
inline T Sqr(const T& x) {
  return x * x;
}
const int maxn = 110;
const int maxk = 210;
double a[maxn][maxn][maxk];
int n, k;
int Get(int l, int r, int pos) {
  if (pos < l || pos > r) {
    return pos;
  } else {
    return l + r - pos;
  }
}
int main() {
  ios_base::sync_with_stdio(false);
  cin >> n >> k;
  vector<int> p(n);
  for (int i = 0; i < n; ++i) {
    cin >> p[i];
  }
  for (int i = 0; i < n; ++i) {
    for (int j = 0; j < n; ++j) {
      a[i][j][0] = (i < j ? 1.0 : 0.0);
    }
  }
  double cnt = 0;
  for (int i = 0; i < n; ++i) {
    for (int j = i; j < n; ++j) {
      cnt += 1.0;
    }
  }
  for (int iter = 1; iter <= k; ++iter) {
    for (int i = 0; i < n; ++i) {
      for (int j = 0; j < n; ++j) {
        a[i][j][iter] = 0;
        for (int l = 0; l < n; ++l) {
          for (int r = l; r < n; ++r) {
            int i1 = Get(l, r, i);
            int j1 = Get(l, r, j);
            a[i][j][iter] += 1 / cnt * a[i1][j1][iter - 1];
          }
        }
      }
    }
  }
  double ans = 0.0;
  for (int i = 0; i < n; ++i) {
    for (int j = i + 1; j < n; ++j) {
      if (p[i] < p[j]) {
        ans += a[j][i][k];
      } else {
        ans += a[i][j][k];
      }
    }
  }
  printf("%.12lf\n", ans);
  return 0;
}
