#include #include using namespace std; int fastest(vector &A) { vector distance; vector Q; int i, j, N; N = A.size(); for (i = 0; i < N; i++) distance.push_back(-1); distance[0] = 0; Q.push_back(0); for (i = 0; i < Q.size(); i++) { if (Q[i] == N-1) return distance[N-1]; for (j = 0; j < N; j++) { if (A[Q[i]][j] == '1' && distance[j] == -1) { distance[j] = distance[Q[i]]+1; Q.push_back(j); } } } return -1; } main() { string s; int i, j; vector A; while (cin >> s) A.push_back(s); for (i = 0; i < A.size(); i++) { if (A[i].size() != A.size()) { printf("Bad Input\n"); exit(0); } for (j = 0; j < A[i].size(); j++) if (A[i][j] != '0' && A[i][j] != '1') { printf("Bad Input\n"); exit(0); } } printf("%d\n", fastest(A)); }