#include <bits/stdc++.h>

using namespace std;

int n;
int m;
int mat[25][25];
int bojenja[10005];
long long obojene[10005];
long long obojenePromena[10005];
int strana[25];
int sol;

long long izracunaj()
{
    long long dosadnost=0;
    
    for(int i=1;i<=m;i++)
    {
        dosadnost+=obojenePromena[i]*(n-obojenePromena[i]);
    }
    
    return dosadnost;
}

int ofarbaj()
{
    for(int i=1;i<=n;i++)
    {
        for(int j=1;j<=m;j++)
        {
            mat[i][j]=0;
        }
    }
    
    for(int i=1;i<=n;i++)
    {
        if(strana[i]==1)
        {
            for(int j=1;j<=bojenja[i];j++)
            {
                mat[i][j]=1;
            }
        }
        else
        {
            for(int j=bojenja[i]+1;j<=m;j++)
            {
                mat[i][j]=1;
            }
        }
    }
    
    int dosadnost=0;
    
    for(int j=1;j<=m;j++)
    {
        int kolona=0;
        int br=0;
         
        for(int i=1;i<=n;i++)
        {
            if(mat[i][j]==1) br++;
        }
        
        kolona=br*(n-br);
        
        dosadnost+=kolona;
    }
    
    return dosadnost;
    
}

void izaberi(int indeks)
{
    if(indeks>n)
    {
        sol=min(sol,ofarbaj());
    }
    else
    {
        strana[indeks]=1;
        izaberi(indeks+1);
        strana[indeks]=2;
        izaberi(indeks+1);
    }
}

void stampaj()
{
    for(int i=1;i<=m;i++)
    {
        cout << obojenePromena[i] << " ";
    }
    cout << "\n";
}

int main() 
{
    ios_base::sync_with_stdio(false);
    cin.tie(0);
    cout.tie(0);
    cerr.tie(0);
    
    cin >> n >> m;
    
    if(n<=15 && m<=15)
    {
        sol=100000000;
    
        for(int i=1;i<=n;i++)
        {
           cin >> bojenja[i];
        }
     
        izaberi(1);
    
        cout << sol;
    }
    else
    {
        for(int i=1;i<=n;i++)
        {
            cin >> bojenja[i];
        }
        
        for(int i=1;i<=m;i++)
        {
            obojene[i]=0;
        }
        
        sort(bojenja+1,bojenja+n+1);
    
        for(int i=1;i<=n;i++)
        {
            int bojenje=bojenja[i];
            
            for(int i=1;i<=bojenje;i++)
            {
                obojene[i]++;
            }
        }
        
        for(int i=1;i<=m;i++)
        {
            obojenePromena[i]=obojene[i];
        }
        
       //stampaj();
        
        long long res=izracunaj();
        
        int duzinaCetvorki=0;
        int start=-1;
        
        for(int i=1;i<=m;i++)
        {
            if(obojene[i]==n)
            {
                duzinaCetvorki++;
            }
            else
            {
                start=i;
                break;
            }
        }
        
        if(start==-1)
        {
            cout << 0;
            return 0;
        }
        else
        {
            int maksDuzina=1;
            int tempDuzina=1;
            int startD=start;
            int endD=start;
            
            for(int i=start+1;i<=m;i++)
            {
                if(obojene[i]==obojene[i-1])
                {
                    tempDuzina++;
                }
                else
                {
                    if(tempDuzina>maksDuzina)
                    {
                        maksDuzina=tempDuzina;
                        startD=i-tempDuzina;
                        endD=i-1;
                    }
                    tempDuzina=1;
                }
            }
            
            if(tempDuzina>maksDuzina)
                    {
                        maksDuzina=tempDuzina;
                        startD=n+1-tempDuzina;
                        endD=n;
                    }
            
            //cout << maksDuzina << " " << startD << " " << endD << "\n";
            
            for(int i=1;i<=m;i++)
            {
                obojenePromena[i]=obojene[i];
            }
            
            int visina=obojene[startD];
            int ostatak=n-visina;
            
            for(int i=1;i<startD;i++)
            {
                obojenePromena[i]=visina+(n-visina)-(obojenePromena[i]-visina);
            }
            
            for(int i=startD;i<=endD;i++)
            {
                obojenePromena[i]=n;
            }
            
            for(int i=endD+1;i<=m;i++)
            {
                obojenePromena[i]+=(n-visina);
            }
            
            //stampaj();
            
            long long res1=izracunaj();
            
             for(int i=1;i<=m;i++)
             {
                obojenePromena[i]=obojene[i];
             }
             
             for(int i=1;i<startD;i++)
             {
                 obojenePromena[i]-=visina;
             }
             
             for(int i=startD;i<=endD;i++)
             {
                 obojenePromena[i]=0;
             }
             
             for(int i=endD+1;i<=m;i++)
             {
                 obojenePromena[i]=visina-obojenePromena[i];
             }
            
             //stampaj();
            
             long long res2=izracunaj();
             
             res=min(res,min(res1,res2));
             
             cout << res;
        }
        
    }
    
    return 0;
}