#include<bits/stdc++.h>
using namespace std;
#define int long long
#define F(i,k,n) for (int i=k;i<=n;i++)
typedef long long ll;
const int N=11;
int n,m;
int a[N*N][N];
queue<int>q;
bool p[1<<N];
int step[1<<N];
signed main(){
cin>>n>>m;
F(i,1,m) F(j,0,n-1) cin>>a[i][j];
q.push((1<<n)-1);p[q.front()]=1;
while (!q.empty()){
int v=q.front();
q.pop();
F(i,1,m){
int now=v;
F(j,0,n-1){
if (a[i][j]==-1){
if ((now>>j)&1==0) now+=1<<j;
}
else if (a[i][j]==1){
if ((now>>j)&1==1) now-=1<<j;
}
}
if (p[now]) continue;
p[now]=1;
step[now]=step[v]+1;
q.push(now);
}
}
if (!p[0]) cout<<-1;
else cout<<step[0];
return 0;
}