#include <bits/stdc++.h>
using namespace std;
#define ll long long
#define pb push_back
#define fi first
#define se second
#define pii pair<int,int>
#define sz(x) (int)(x).size()
const int N = 21;
const int mod = 1e9 + 7;
#define BIT(mask, x) ((mask >> (x)) & 1)
int n, m, a[1000005], cnt[N], f[N][N];
ll dp[1 << N];
signed main() {
freopen("game.inp","r",stdin);
freopen("game.out","w",stdout);
ios::sync_with_stdio(0);
cin.tie(0);
while(cin >> n >> m){
if (n == 0 && m == 0) break;
for(int i = 1; i <= n; ++i) cin >> a[i];
memset(cnt, 0, sizeof cnt);
memset(f, 0, sizeof f);
for(int mask = 0; mask < (1 << m); ++mask) dp[mask] = 1e18;
dp[0] = 0;
for(int i = 1; i <= n; ++i){
for(int j = 1; j <= m; ++j) f[j][a[i]] += cnt[j];
++cnt[a[i]];
}
for(int mask = 0; mask < (1 << m); ++mask){
for(int i = 0; i < m; ++i){
if (!BIT(mask, i)){
int tol = 0;
for(int j = 0; j < m; ++j){
if (j != i && !BIT(mask, j)) tol += f[j + 1][i + 1];
}
dp[mask | (1 << i)] = min(dp[mask | (1 << i)], dp[mask] + tol);
}
}
}
cout << dp[(1 << m) - 1] << '\n';
}
}
I2luY2x1ZGUgPGJpdHMvc3RkYysrLmg+CnVzaW5nIG5hbWVzcGFjZSBzdGQ7CgojZGVmaW5lIGxsIGxvbmcgbG9uZwojZGVmaW5lIHBiIHB1c2hfYmFjawojZGVmaW5lIGZpIGZpcnN0CiNkZWZpbmUgc2Ugc2Vjb25kCiNkZWZpbmUgcGlpIHBhaXI8aW50LGludD4KI2RlZmluZSBzeih4KSAoaW50KSh4KS5zaXplKCkKY29uc3QgaW50IE4gPSAyMTsKY29uc3QgaW50IG1vZCA9IDFlOSArIDc7CgojZGVmaW5lIEJJVChtYXNrLCB4KSAoKG1hc2sgPj4gKHgpKSAmIDEpCmludCBuLCBtLCBhWzEwMDAwMDVdLCBjbnRbTl0sIGZbTl1bTl07CmxsIGRwWzEgPDwgTl07CnNpZ25lZCBtYWluKCkgewogICAgZnJlb3BlbigiZ2FtZS5pbnAiLCJyIixzdGRpbik7CiAgICBmcmVvcGVuKCJnYW1lLm91dCIsInciLHN0ZG91dCk7CiAgICBpb3M6OnN5bmNfd2l0aF9zdGRpbygwKTsKICAgIGNpbi50aWUoMCk7CgogICAgd2hpbGUoY2luID4+IG4gPj4gbSl7CiAgICAgICAgaWYgKG4gPT0gMCAmJiBtID09IDApIGJyZWFrOwogICAgICAgIGZvcihpbnQgaSA9IDE7IGkgPD0gbjsgKytpKSBjaW4gPj4gYVtpXTsKICAgICAgICBtZW1zZXQoY250LCAwLCBzaXplb2YgY250KTsKICAgICAgICBtZW1zZXQoZiwgMCwgc2l6ZW9mIGYpOwogICAgICAgIGZvcihpbnQgbWFzayA9IDA7IG1hc2sgPCAoMSA8PCBtKTsgKyttYXNrKSBkcFttYXNrXSA9IDFlMTg7CiAgICAgICAgZHBbMF0gPSAwOwogICAgICAgIGZvcihpbnQgaSA9IDE7IGkgPD0gbjsgKytpKXsKICAgICAgICAgICAgZm9yKGludCBqID0gMTsgaiA8PSBtOyArK2opIGZbal1bYVtpXV0gKz0gY250W2pdOwogICAgICAgICAgICArK2NudFthW2ldXTsKICAgICAgICB9CiAgICAgICAgZm9yKGludCBtYXNrID0gMDsgbWFzayA8ICgxIDw8IG0pOyArK21hc2spewogICAgICAgICAgICBmb3IoaW50IGkgPSAwOyBpIDwgbTsgKytpKXsKICAgICAgICAgICAgICAgIGlmICghQklUKG1hc2ssIGkpKXsKICAgICAgICAgICAgICAgICAgICBpbnQgdG9sID0gMDsKICAgICAgICAgICAgICAgICAgICBmb3IoaW50IGogPSAwOyBqIDwgbTsgKytqKXsKICAgICAgICAgICAgICAgICAgICAgICAgaWYgKGogIT0gaSAmJiAhQklUKG1hc2ssIGopKSB0b2wgKz0gZltqICsgMV1baSArIDFdOwogICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICBkcFttYXNrIHwgKDEgPDwgaSldID0gbWluKGRwW21hc2sgfCAoMSA8PCBpKV0sIGRwW21hc2tdICsgdG9sKTsKICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgfQogICAgICAgIH0KICAgICAgICBjb3V0IDw8IGRwWygxIDw8IG0pIC0gMV0gPDwgJ1xuJzsKICAgIH0gICAgCn0=