#include <iostream>
#include <stdio.h>
#include <algorithm>

#define MAXN 100000
#define MAXM 10000

using namespace std;

void unos(int a[],int &n,int &m)
{
    scanf("%d %d",&n,&m);
    for(int i=0;i<n;i++)
        scanf("%d",&a[i]);
}

void ispis(int a[],int n){
    for(int i=0;i<n;i++)
        cout<<a[i]<<" ";
    cout<<endl;
}

void izracunaj(int a[],int b[],int n,int m)
{
    for(int i=0;i<m;i++)
        b[i]=0;
    int i=0,j=0;
    for(;i<n&&j<m;)
        if(a[i]>j){
            b[j]+=n-i;
            j++;
        }
        else
            i++;
}

int izr(int a[],int b[],bool c[],int n,int m)
{
    int r=0,x[MAXM];
    for(int i=0;i<m;i++)
        x[i]=0;
    for(int i=0;i<n;i++)
        for(int j=0;j<m;j++)
            if(c[i]){
                if(j>=a[i])
                    x[j]++;
            }
            else
                if(j<a[i])
                    x[j]++;
    //ispis(x,m);
    for(int i=0;i<m;i++)
        r+=(n-x[i])*x[i];
    return r;
}

int rekurz(int a[],int b[],bool c[],int n,int m,int i)
{
    int x,y;
    if(i==n){
        //cout<<izr(a,b,c,n,m)<<endl;
        return izr(a,b,c,n,m);
    }
    c[i]=0;
    x=rekurz(a,b,c,n,m,i+1);
    c[i]=1;
    y=rekurz(a,b,c,n,m,i+1);
    return min(x,y);
}

int brute_force(int a[],int b[],int n,int m)
{
    bool c[MAXN];
    return rekurz(a,b,c,n,m,0);
}

int main()
{
    int n,m,a[MAXN],b[MAXM];
    unos(a,n,m);
    sort(a,a+n);
    izracunaj(a,b,n,m);
    //ispis(b,m);
    if(n<=20)
        cout<<brute_force(a,b,n,m);
    /*else
        cout<<nepouzdano(a,n,m);*/

    return 0;
}