#include <bits/stdc++.h>
using namespace std;
template <typename T>
ostream &operator<<(ostream &o, vector<T> &v) {
  for (typeof(v.size()) i = 0; i < v.size(); ++i) o << v[i] << " ";
  o << endl;
  return o;
}
template <class T1, class T2, class T3>
struct trio {
  T1 first;
  T2 second;
  T3 third;
  trio() : first(T1()), second(T2()), third(T3()) {}
  trio(const T1 &x, const T2 &y, const T3 &z) : first(x), second(y), third(z) {}
  template <class X, class Y, class Z>
  trio(const trio<X, Y, Z> &p)
      : first(p.first), second(p.second), third(p.third) {}
};
template <class T1, class T2, class T3>
bool operator<(const trio<T1, T2, T3> &x, const trio<T1, T2, T3> &y) {
  if (x.first < y.first)
    return true;
  else if (x.first > y.first)
    return false;
  if (x.second < y.second)
    return true;
  else if (x.second > y.second)
    return false;
  if (x.third < y.third)
    return true;
  else if (x.third > y.third)
    return false;
  return false;
}
template <typename T, typename U>
ostream &operator<<(ostream &o, const pair<T, U> &x) {
  o << x.first << "," << x.second << " ";
  return o;
}
template <typename T>
istream &operator>>(istream &i, vector<T> &v) {
  int n;
  i >> n;
  while (n--) {
    int x;
    i >> x;
    v.push_back(x);
  }
  return i;
}
void printdec(int num, int den) {
  int q = num / den;
  printf("%d.", q);
  num %= den;
  for (int p = 0; p < 14; ++p) {
    num *= 10;
    printf("%d", num / den);
    num %= den;
  }
  printf("\n");
}
int main() {
  int n, k;
  while (scanf("%d%d", &n, &k) != EOF) {
    vector<int> in(n);
    for (int i = 0; i < n; ++i) cin >> in[i];
    queue<vector<int> > q;
    int ans = 0;
    int lvl = 0;
    int cnt = 0;
    q.push(in);
    q.push(vector<int>());
    while (!q.empty()) {
      vector<int> v = q.front();
      q.pop();
      if (v.size() == 0) {
        if (lvl == k) break;
        lvl++;
        cnt = 0;
        ans = 0;
        q.push(v);
        continue;
      }
      cnt++;
      int lans = 0;
      for (int i = 0; i < n; ++i)
        for (int j = i; j < n; ++j)
          if (v[i] > v[j]) lans++;
      ans += lans;
      if (lvl == k) continue;
      for (int i = 0; i < n; ++i)
        for (int j = i; j < n; ++j) {
          reverse(v.begin() + i, v.begin() + j + 1);
          q.push(v);
          reverse(v.begin() + i, v.begin() + j + 1);
        }
    }
    printdec(ans, cnt);
  }
  return 0;
}
