#include<bits/stdc++.h>
using namespace std;
typedef long long ll;
int n,l;
int adj[200][200];
int color[200];
int visited[200];
bool ispipartite=1;
int cntconnected=0;
int cnt=0;
void dfs(int u)
{
visited[u]=1;
cntconnected++;
for(int v=0;v<200;v++)
{
if(adj[u][v]&&!visited[v])
{
dfs(v);
}
}
}
void bfs(int s)
{
queue <int>q;
q.push(s);
color[s]=0;
while(!q.empty()&&ispipartite)
{
int u=q.front();q.pop();
if(color[u]==0)cnt++;
for(int v=0;v<200;v++)
{
if(adj[u][v])
{
if(color[v]==-1){color[v]=1-color[u];q.push(v);}
else if(color[v]==color[u])
{
ispipartite=0;
break;
}
}
}
}
}
int main()
{
//freopen("out.txt","w",stdout);
int Min;
int T;
cin>>T;
int u,v;
while(T--)
{
ispipartite=1;
Min=0;
cin>>n;
memset(adj,0,sizeof adj);
memset(visited,0,sizeof visited);
cin>>l;
for(int i=0;i<l;i++)
{
cin>>u>>v;
adj[u][v]=adj[v][u]=1;
}
for(int i=0;i<n;i++)
{
if(!visited[i])
{
cntconnected=0;
dfs(i);
cnt=0;
memset(color,-1,sizeof color);
bfs(i);
if(ispipartite)
{
if(cntconnected==1)Min+=1;
else if(cnt!=0&&cnt<=cntconnected-cnt)Min+=cnt;
else Min+=(cntconnected-cnt);
}
else break;
}
}
if(ispipartite)cout<<Min<<endl;
else cout<<-1<<endl;
}
return 0;
}
I2luY2x1ZGU8Yml0cy9zdGRjKysuaD4KCnVzaW5nIG5hbWVzcGFjZSBzdGQ7Cgp0eXBlZGVmIGxvbmcgbG9uZyBsbDsKaW50IG4sbDsKaW50IGFkalsyMDBdWzIwMF07CmludCBjb2xvclsyMDBdOwppbnQgdmlzaXRlZFsyMDBdOwpib29sIGlzcGlwYXJ0aXRlPTE7CmludCBjbnRjb25uZWN0ZWQ9MDsKaW50IGNudD0wOwp2b2lkIGRmcyhpbnQgdSkKewogICAgdmlzaXRlZFt1XT0xOwogICAgY250Y29ubmVjdGVkKys7CiAgICBmb3IoaW50IHY9MDt2PDIwMDt2KyspCiAgICB7CiAgICAgICAgaWYoYWRqW3VdW3ZdJiYhdmlzaXRlZFt2XSkKICAgICAgICB7CiAgICAgICAgICAgIGRmcyh2KTsKICAgICAgICB9CiAgICB9Cn0Kdm9pZCBiZnMoaW50IHMpCnsKICAgIHF1ZXVlIDxpbnQ+cTsKICAgIHEucHVzaChzKTsKICAgIGNvbG9yW3NdPTA7CiAgICB3aGlsZSghcS5lbXB0eSgpJiZpc3BpcGFydGl0ZSkKICAgIHsKICAgICAgICBpbnQgdT1xLmZyb250KCk7cS5wb3AoKTsKICAgICAgICBpZihjb2xvclt1XT09MCljbnQrKzsKICAgICAgICBmb3IoaW50IHY9MDt2PDIwMDt2KyspCiAgICAgICAgewogICAgICAgICAgICBpZihhZGpbdV1bdl0pCiAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgaWYoY29sb3Jbdl09PS0xKXtjb2xvclt2XT0xLWNvbG9yW3VdO3EucHVzaCh2KTt9CiAgICAgICAgICAgICAgIGVsc2UgaWYoY29sb3Jbdl09PWNvbG9yW3VdKQogICAgICAgICAgICAgICB7CiAgICAgICAgICAgICAgICAgICBpc3BpcGFydGl0ZT0wOwogICAgICAgICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgfQogICAgICAgIH0KICAgIH0KfQppbnQgbWFpbigpCnsKICAgIC8vZnJlb3Blbigib3V0LnR4dCIsInciLHN0ZG91dCk7CiAgICBpbnQgTWluOwogICAgaW50IFQ7CiAgICBjaW4+PlQ7CiAgICBpbnQgdSx2OwogICAgd2hpbGUoVC0tKQogICAgewogICAgICAgIGlzcGlwYXJ0aXRlPTE7CiAgICAgICAgTWluPTA7CiAgICAgICAgY2luPj5uOwogICAgICAgIG1lbXNldChhZGosMCxzaXplb2YgYWRqKTsKICAgICAgICBtZW1zZXQodmlzaXRlZCwwLHNpemVvZiB2aXNpdGVkKTsKICAgICAgICBjaW4+Pmw7CiAgICAgICAgZm9yKGludCBpPTA7aTxsO2krKykKICAgICAgICB7CiAgICAgICAgICAgIGNpbj4+dT4+djsKICAgICAgICAgICAgYWRqW3VdW3ZdPWFkalt2XVt1XT0xOwogICAgICAgIH0KICAgICAgICBmb3IoaW50IGk9MDtpPG47aSsrKQogICAgICAgIHsKICAgICAgICAgICAgaWYoIXZpc2l0ZWRbaV0pCiAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgIGNudGNvbm5lY3RlZD0wOwogICAgICAgICAgICAgICAgZGZzKGkpOwogICAgICAgICAgICAgICAgY250PTA7CiAgICAgICAgICAgICAgICBtZW1zZXQoY29sb3IsLTEsc2l6ZW9mIGNvbG9yKTsKICAgICAgICAgICAgICAgIGJmcyhpKTsKICAgICAgICAgICAgICAgIGlmKGlzcGlwYXJ0aXRlKQogICAgICAgICAgICAgICAgewogICAgICAgICAgICAgICAgICAgIGlmKGNudGNvbm5lY3RlZD09MSlNaW4rPTE7CiAgICAgICAgICAgICAgICAgICAgZWxzZSBpZihjbnQhPTAmJmNudDw9Y250Y29ubmVjdGVkLWNudClNaW4rPWNudDsKICAgICAgICAgICAgICAgICAgICBlbHNlIE1pbis9KGNudGNvbm5lY3RlZC1jbnQpOwoKICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgIGVsc2UgYnJlYWs7CiAgICAgICAgICAgIH0KICAgICAgICB9CiAgICAgICAgaWYoaXNwaXBhcnRpdGUpY291dDw8TWluPDxlbmRsOwogICAgICAgIGVsc2UgY291dDw8LTE8PGVuZGw7CiAgICB9CiAgICByZXR1cm4gMDsKfQo=