#include<bits/stdc++.h>
#define llong long long
using namespace std;

const int N = 200;
char g[N+3][N+3];
int dis[N+3][N+3];
int n;

int absl(int x) {return x<0?-x:x;}

int main()
{
	scanf("%d",&n);
	for(int i=1; i<=n; i++) scanf("%s",g[i]+1);
	memset(dis,42,sizeof(dis));
	for(int i=1; i<=n; i++) for(int j=1; j<=n; j++) {if(g[i][j]=='1') dis[i][j] = 1;}
	for(int i=1; i<=n; i++) dis[i][i] = 0;
	for(int k=1; k<=n; k++)
	{
		for(int i=1; i<=n; i++)
		{
			for(int j=1; j<=n; j++)
			{
				dis[i][j] = min(dis[i][j],dis[i][k]+dis[k][j]);
			}
		}
	}
//	for(int i=1; i<=n; i++) {for(int j=1; j<=n; j++) printf("%d ",dis[i][j]); puts("");}
	int ans = -1;
	for(int k=1; k<=n; k++)
	{
		bool ok = true;
		for(int i=1; i<=n; i++)
		{
			for(int j=1; j<=n; j++)
			{
				if(g[i][j]=='1'&&dis[k][i]==dis[k][j]) {ok = false; break;}
			}
		}
		if(ok)
		{
			for(int i=1; i<=n; i++)
			{
				ans = max(ans,dis[k][i]+1);
			}
		}
	}
	printf("%d\n",ans);
	return 0;
}