rt
#include<bits/stdc++.h>
using namespace std;
int a[110][20];
bool vis[1030];
int main(){
ios::sync_with_stdio(0),cin.tie(0),cout.tie(0);
int n,m,cnt=0;
cin>>n>>m;
for(int i=1;i<=m;++i){
for(int j=1;j<=n;++j){
cin>>a[i][j];
}
}
queue<pair<int,int> >q;
q.push(make_pair((1<<n)-1,0)),vis[(1<<n)-1]=1;
while(!q.empty()){
int u=q.front().first,d=q.front().second;
for(int i=1;i<=m;++i){
int v=0;
for(int j=1,k=u;j<=n;++j,k>>=1){
v<<=1;
if(a[i][j]>0){
v|=0;
}
else if(a[i][j]<0){
v|=1;
}
else{
v|=k&1;
}
}
if(!v){
cout<<d+1,exit(0);
}
if(!vis[v]){
q.push(make_pair(v,d+1)),vis[v]=1,cnt++;
}
}
q.pop();
}
cout<<-1;
return 0;
}