#include<stdio.h>
#include<string.h>
#include<vector>
using namespace std;
#define M 505
vector<int>v[M];
bool mask[M];
int link[M];
int n,k;
bool findpath(int i)
{
int term;
for(int j=0;j<v[i].size();j++)
{
term=v[i][j];
if(!mask[term])
{
mask[term]=true;
if(!link[term]||findpath(link[term]))
{
link[term]=i;
return true;
}
// mask[term]=false;
}
}
return false;
}
int main()
{
int T,i, a,b,res;
scanf("%d",&T);
while(T--)
{
memset(link,0,sizeof(link));
scanf("%d%d",&n,&k);
for(i=1;i<=k;i++)
{
scanf("%d%d",&a,&b);
v[a].push_back(b);
}
res=0;
for(i=1;i<=n;i++)
{
memset(mask,0,sizeof(mask));
if(findpath(i))res++;
}
printf("%d\n",res);
for(i=1;i<=n;i++)v[i].clear();
}
return 0;
}