#include<bits/stdc++.h>
#define X first
#define Y second
#define all(x) begin(x), end(x)
#define FOR(i, a, b) for(int i = (a); i <= (b); i++)
#define FORD(i, b, a) for(int i = (b); i >= (a); i--)
#define REP(i, a, b) for (int i = (a); i < (b); i++)
#define mxx max_element
#define mnn min_element
#define SQR(x) (1LL * (x) * (x))
#define MASK(i) (1LL << (i))
#define Point Vector
#define left Left
#define right Right
#define div Div
using namespace std;
typedef long long ll;
typedef unsigned long long ull;
typedef double db;
typedef long double ld;
typedef pair<db, db> pdb;
typedef pair<ld, ld> pld;
typedef pair<int, int> pii;
typedef pair<int, pii> piii;
typedef pair<ll, ll> pll;
typedef pair<ll, pll> plll;
typedef pair<ll, int> pli;
typedef pair<ll, pii> plii;
template<class A, class B>
bool maximize(A& x, B y) {
if (x < y) return x = y, true; else return false;
}
template<class A, class B>
bool minimize(A& x, B y) {
if (x > y) return x = y, true; else return false;
}
/* END OF TEMPLATE */
const int N = 1e5 + 7;
const int M = 16;
int Q, n, m, a[N];
long long cost[M][M];
void build_cost() {
for (int i = 0; i < m; i++)
for (int j = 0; j < m; j++) cost[i][j] = 0;
for (int y = 0; y < m; y++) {
int cnt_y = 0;
for (int i = 1; i <= n; i++)
if (a[i] == y) cnt_y++; else cost[y][a[i]]+=cnt_y;
}
}
long long dp[MASK(M)], sum[M];
int cnt[M];
void solve() {
cin>>n>>m;
memset(sum, 0, sizeof(sum));
memset(cnt, 0, sizeof(cnt));
for (int i = 1; i <= n; i++) {
cin>>a[i];
a[i]--;
sum[a[i]]+=i;
cnt[a[i]]++;
}
build_cost();
for (int mask = 0; mask < MASK(m); mask++) dp[mask] = 1e18;
dp[0] = 0;
for (int mask = 0; mask < MASK(m); mask++) {
for (int x = 0; x < m; x++)
if (((mask >> x) & 1) == 0) {
long long chi_phi = sum[x] - cnt[x] - 1LL * cnt[x] * (cnt[x] - 1) / 2;
for (int y = 0; y < m; y++)
if (((mask >> y) & 1) == 1) chi_phi-=cost[y][x];
minimize(dp[mask | MASK(x)], dp[mask] + chi_phi);
}
}
cout<<dp[MASK(m) - 1]<<"\n";
}
int main() {
ios_base::sync_with_stdio(0);
cin.tie(0);
int Q = 0;
cin>>Q;
while (Q--) solve();
return 0;
}
CiNpbmNsdWRlPGJpdHMvc3RkYysrLmg+CiNkZWZpbmUgWCBmaXJzdAojZGVmaW5lIFkgc2Vjb25kCiNkZWZpbmUgYWxsKHgpIGJlZ2luKHgpLCBlbmQoeCkKI2RlZmluZSBGT1IoaSwgYSwgYikgZm9yKGludCBpID0gKGEpOyBpIDw9IChiKTsgaSsrKQojZGVmaW5lIEZPUkQoaSwgYiwgYSkgZm9yKGludCBpID0gKGIpOyBpID49IChhKTsgaS0tKQojZGVmaW5lIFJFUChpLCBhLCBiKSBmb3IgKGludCBpID0gKGEpOyBpIDwgKGIpOyBpKyspCiNkZWZpbmUgbXh4IG1heF9lbGVtZW50CiNkZWZpbmUgbW5uIG1pbl9lbGVtZW50CiNkZWZpbmUgU1FSKHgpICgxTEwgKiAoeCkgKiAoeCkpCiNkZWZpbmUgTUFTSyhpKSAoMUxMIDw8IChpKSkKI2RlZmluZSBQb2ludCBWZWN0b3IKI2RlZmluZSBsZWZ0IExlZnQKI2RlZmluZSByaWdodCBSaWdodAojZGVmaW5lIGRpdiBEaXYKCnVzaW5nIG5hbWVzcGFjZSBzdGQ7Cgp0eXBlZGVmIGxvbmcgbG9uZyBsbDsKdHlwZWRlZiB1bnNpZ25lZCBsb25nIGxvbmcgdWxsOwp0eXBlZGVmIGRvdWJsZSBkYjsKdHlwZWRlZiBsb25nIGRvdWJsZSBsZDsKdHlwZWRlZiBwYWlyPGRiLCBkYj4gcGRiOwp0eXBlZGVmIHBhaXI8bGQsIGxkPiBwbGQ7CnR5cGVkZWYgcGFpcjxpbnQsIGludD4gcGlpOwp0eXBlZGVmIHBhaXI8aW50LCBwaWk+IHBpaWk7CnR5cGVkZWYgcGFpcjxsbCwgbGw+IHBsbDsKdHlwZWRlZiBwYWlyPGxsLCBwbGw+IHBsbGw7CnR5cGVkZWYgcGFpcjxsbCwgaW50PiBwbGk7CnR5cGVkZWYgcGFpcjxsbCwgcGlpPiBwbGlpOwoKdGVtcGxhdGU8Y2xhc3MgQSwgY2xhc3MgQj4KICAgIGJvb2wgbWF4aW1pemUoQSYgeCwgQiB5KSB7CiAgICAgICAgaWYgKHggPCB5KSByZXR1cm4geCA9IHksIHRydWU7IGVsc2UgcmV0dXJuIGZhbHNlOwogICAgfQp0ZW1wbGF0ZTxjbGFzcyBBLCBjbGFzcyBCPgogICAgYm9vbCBtaW5pbWl6ZShBJiB4LCBCIHkpIHsKICAgICAgICBpZiAoeCA+IHkpIHJldHVybiB4ID0geSwgdHJ1ZTsgZWxzZSByZXR1cm4gZmFsc2U7CiAgICB9CgovKiBFTkQgT0YgVEVNUExBVEUgKi8KCmNvbnN0IGludCBOID0gMWU1ICsgNzsKY29uc3QgaW50IE0gPSAxNjsKCmludCBRLCBuLCBtLCBhW05dOwoKbG9uZyBsb25nIGNvc3RbTV1bTV07Cgp2b2lkIGJ1aWxkX2Nvc3QoKSB7CiAgICBmb3IgKGludCBpID0gMDsgaSA8IG07IGkrKykKICAgICAgICBmb3IgKGludCBqID0gMDsgaiA8IG07IGorKykgY29zdFtpXVtqXSA9IDA7CiAgICBmb3IgKGludCB5ID0gMDsgeSA8IG07IHkrKykgewogICAgICAgIGludCBjbnRfeSA9IDA7CiAgICAgICAgZm9yIChpbnQgaSA9IDE7IGkgPD0gbjsgaSsrKQogICAgICAgICAgICBpZiAoYVtpXSA9PSB5KSBjbnRfeSsrOyBlbHNlIGNvc3RbeV1bYVtpXV0rPWNudF95OwogICAgfQp9Cgpsb25nIGxvbmcgZHBbTUFTSyhNKV0sIHN1bVtNXTsKaW50IGNudFtNXTsKCnZvaWQgc29sdmUoKSB7CiAgICBjaW4+Pm4+Pm07CiAgICBtZW1zZXQoc3VtLCAwLCBzaXplb2Yoc3VtKSk7CiAgICBtZW1zZXQoY250LCAwLCBzaXplb2YoY250KSk7CiAgICBmb3IgKGludCBpID0gMTsgaSA8PSBuOyBpKyspIHsKICAgICAgICBjaW4+PmFbaV07CiAgICAgICAgYVtpXS0tOwogICAgICAgIHN1bVthW2ldXSs9aTsKICAgICAgICBjbnRbYVtpXV0rKzsKICAgIH0KICAgIGJ1aWxkX2Nvc3QoKTsKICAgIGZvciAoaW50IG1hc2sgPSAwOyBtYXNrIDwgTUFTSyhtKTsgbWFzaysrKSBkcFttYXNrXSA9IDFlMTg7CiAgICBkcFswXSA9IDA7CiAgICBmb3IgKGludCBtYXNrID0gMDsgbWFzayA8IE1BU0sobSk7IG1hc2srKykgewogICAgICAgIGZvciAoaW50IHggPSAwOyB4IDwgbTsgeCsrKQogICAgICAgICAgICBpZiAoKChtYXNrID4+IHgpICYgMSkgPT0gMCkgewogICAgICAgICAgICAgICAgbG9uZyBsb25nIGNoaV9waGkgPSBzdW1beF0gLSBjbnRbeF0gLSAxTEwgKiBjbnRbeF0gKiAoY250W3hdIC0gMSkgLyAyOwogICAgICAgICAgICAgICAgZm9yIChpbnQgeSA9IDA7IHkgPCBtOyB5KyspCiAgICAgICAgICAgICAgICAgICAgaWYgKCgobWFzayA+PiB5KSAmIDEpID09IDEpIGNoaV9waGktPWNvc3RbeV1beF07CiAgICAgICAgICAgICAgICBtaW5pbWl6ZShkcFttYXNrIHwgTUFTSyh4KV0sIGRwW21hc2tdICsgY2hpX3BoaSk7CiAgICAgICAgICAgIH0KICAgIH0KICAgIGNvdXQ8PGRwW01BU0sobSkgLSAxXTw8IlxuIjsKfQoKaW50IG1haW4oKSB7CiAgICBpb3NfYmFzZTo6c3luY193aXRoX3N0ZGlvKDApOwogICAgY2luLnRpZSgwKTsKICAgIGludCBRID0gMDsKICAgIGNpbj4+UTsKICAgIHdoaWxlIChRLS0pIHNvbHZlKCk7CiAgICByZXR1cm4gMDsKfQo=