#include<bits/stdc++.h>
#define L long long
using namespace std;
const L N=5145,mod=1e8;
L n,m,sw[114][14],vis[N];
queue<L> que;
L change(L s,L x){
for(L i=1;i<=n;i++){
if(sw[x][i]== 1&&(s&(1<<(i-1)))==(1<<(i-1))) s^=(1<<(i-1));
if(sw[x][i]==-1&&(s&(1<<(i-1)))==0) s^=(1<<(i-1));
}
return s;
}
int main(){
scanf("%lld%lld",&n,&m);
for(L i=1;i<=m;i++){
for(L j=1;j<=n;j++){
scanf("%lld",&sw[i][j]);
}
}
vis[(1<<n)-1]=1;
que.push((1<<n)-1);
while(!que.empty()){
L s=que.front();
que.pop();
for(L i=1;i<=m;i++){
if(s==0){
cout<<vis[s];
return 0;
}
L s1=change(s,i);
if(vis[s1]==0){
vis[s1]=vis[s]+1;
que.push(s1);
}
}
}
cout<<"-1";
return 0;
}