#include <bits/stdc++.h>
using namespace std;
bool ist(int x,int y,int n,int m)
{
return (x>=0 && x<n && y>=0 && y<m);
}
void slv()
{
int n,m;
cin>>n>>m;
int a[n][m];
map<int,int> mp;
set<int> s;
for (int i=0; i<n; i++)
{
for (int j=0; j<m; j++)
{
cin>>a[i][j];
s.insert(a[i][j]);
if (mp[a[i][j]]==0)
mp[a[i][j]]++;
if (ist(i+1,j,n,m) && a[i+1][j]==a[i][j])
{mp[a[i][j]]++;continue;}
if (ist(i,j+1,n,m) && a[i][j+1]==a[i][j])
{mp[a[i][j]]++;continue;}
if (ist(i-1,j,n,m) && a[i-1][j]==a[i][j])
{mp[a[i][j]]++;continue;}
if (ist(i,j-1,n,m) && a[i][j-1]==a[i][j])
{mp[a[i][j]]++;continue;}
}
}
int jg=0,mx=0;
for (auto x:s)
{
mx=max(mx,mp[x]);
jg+=mp[x];
}
cout<<jg-mx<<"\n";
}
int main()
{
ios::sync_with_stdio(0);
cin.tie(0);
int tt;
cin>>tt;
while (tt--)
slv();
}
I2luY2x1ZGUgPGJpdHMvc3RkYysrLmg+CnVzaW5nIG5hbWVzcGFjZSBzdGQ7CmJvb2wgaXN0KGludCB4LGludCB5LGludCBuLGludCBtKQp7CnJldHVybiAoeD49MCAmJiB4PG4gJiYgeT49MCAmJiB5PG0pOwp9CnZvaWQgc2x2KCkKewoJaW50IG4sbTsKCWNpbj4+bj4+bTsKICAgIGludCBhW25dW21dOwoJbWFwPGludCxpbnQ+IG1wOwoJc2V0PGludD4gczsKCWZvciAoaW50IGk9MDsgaTxuOyBpKyspCgl7Cglmb3IgKGludCBqPTA7IGo8bTsgaisrKQoJewoJY2luPj5hW2ldW2pdOwoJcy5pbnNlcnQoYVtpXVtqXSk7CglpZiAobXBbYVtpXVtqXV09PTApCgltcFthW2ldW2pdXSsrOwoJaWYgKGlzdChpKzEsaixuLG0pICYmIGFbaSsxXVtqXT09YVtpXVtqXSkKCXttcFthW2ldW2pdXSsrO2NvbnRpbnVlO30KICAgIGlmIChpc3QoaSxqKzEsbixtKSAmJiBhW2ldW2orMV09PWFbaV1bal0pCgl7bXBbYVtpXVtqXV0rKztjb250aW51ZTt9CglpZiAoaXN0KGktMSxqLG4sbSkgJiYgYVtpLTFdW2pdPT1hW2ldW2pdKQoJe21wW2FbaV1bal1dKys7Y29udGludWU7fQoJaWYgKGlzdChpLGotMSxuLG0pICYmIGFbaV1bai0xXT09YVtpXVtqXSkKCXttcFthW2ldW2pdXSsrO2NvbnRpbnVlO30KICAgIH0KICAgIH0KICAgIGludCBqZz0wLG14PTA7CiAgICBmb3IgKGF1dG8geDpzKQogICAgewogICAgbXg9bWF4KG14LG1wW3hdKTsKICAgIGpnKz1tcFt4XTsKCX0KCWNvdXQ8PGpnLW14PDwiXG4iOwp9CmludCBtYWluKCkKewppb3M6OnN5bmNfd2l0aF9zdGRpbygwKTsKY2luLnRpZSgwKTsKaW50IHR0OwpjaW4+PnR0Owp3aGlsZSAodHQtLSkKc2x2KCk7Cn0=