#include <bits/stdc++.h>
using namespace std;
template <typename T>
inline int sz(const T& x) {
  return (int)x.size();
}
template <typename T>
inline void mx(T& x, const T& y) {
  if (x < y) x = y;
}
template <typename T>
inline void mn(T& x, const T& y) {
  if (y < x) x = y;
}
int reversed(int i, int l, int r) {
  if (l <= i && i < r) {
    return (r - 1) - (i - l);
  } else {
    return i;
  }
}
int main() {
  ios_base::sync_with_stdio(false);
  int n, k, m;
  cin >> n >> k;
  k = min(k, 1000);
  vector<int> p(n);
  m = n * n;
  for (int i = 0; i < n; ++i) {
    cin >> p[i];
  }
  double prop = 1.0 / (n * (n + 1) / 2);
  vector<map<int, double>> compressed_map(m);
  for (int i = 0; i < n; ++i)
    for (int j = 0; j < n; ++j)
      if (i != j) {
        for (int r = 0; r < n + 1; ++r)
          for (int l = 0; l < r; ++l) {
            int next_i = reversed(i, l, r);
            int next_j = reversed(j, l, r);
            compressed_map[next_i * n + next_j][i * n + j] += prop;
          }
      }
  vector<vector<pair<int, double>>> compressed(m);
  for (int i = 0; i < m; ++i) {
    copy(compressed_map[i].begin(), compressed_map[i].end(),
         back_inserter(compressed[i]));
  }
  vector<vector<double>> moves_final1(1, vector<double>(m, 0));
  vector<vector<double>> moves_final2(1, vector<double>(m, 0));
  for (int j = 0; j < n; ++j)
    for (int i = 0; i < j; ++i) {
      if (p[i] > p[j])
        moves_final1[0][i * n + j] = 1.0;
      else
        moves_final2[0][i * n + j] = 1.0;
    }
  for (int iter = 0; iter < k; ++iter) {
    vector<vector<double>> moves_tmp1(1, vector<double>(m, 0));
    vector<vector<double>> moves_tmp2(1, vector<double>(m, 0));
    for (int j = 0; j < m; ++j) {
      double s1 = 0;
      double s2 = 0;
      for (auto ppp : compressed[j]) {
        int i = ppp.first;
        s1 += moves_final1[0][i] * ppp.second;
        s2 += moves_final2[0][i] * ppp.second;
      }
      moves_tmp1[0][j] = s1;
      moves_tmp2[0][j] = s2;
    }
    moves_final1 = moves_tmp1;
    moves_final2 = moves_tmp2;
  }
  double ans = 0.0;
  for (int j = 0; j < n; ++j) {
    for (int i = 0; i < j; ++i) {
      ans += moves_final1[0][i * n + j];
      ans += moves_final2[0][j * n + i];
    }
  }
  cout << fixed << setprecision(12) << ans << endl;
  return 0;
}
