#include #include #include #include #include using namespace std; char c[1<<21]; int n[20], d; int kod(vector &a) { int res = 0; for (int i=d-1; i>=0; i--) { res *= n[i]; res += a[i]; } return res; } char ee[1<<21]; bool bol[1<<21]; int vz[1<<20]; vector moc; int T, M, S; void nacitaj(int d, int zac) { if (d>=2) for (int i=0; i q; vz[zac] = 0; bol[zac] = true; for (q.push(zac); !q.empty(); q.pop()) { int o = q.front(); if (o == kon) return vz[o]; for (int i=0; i=n[i]) continue; int y = o+j*moc[i]; if (c[y] == '#') continue; if (!bol[y]) { q.push(y); bol[y] = true; vz[y] = vz[o] + 1; } } } } return -1; } int main() { while (scanf("%d", &d) == 1) { if (!d) break; moc.assign(d+1, 1); for (int i=0; i