#include <bits/stdc++.h>
using namespace std;
int n, m;
int fx, fy, l;
bool mp[20][20];
int dx[4] = {1, 0, -1, 0};
int dy[4] = {0, 1, 0, -1};
pair<int, int> tmp[10];
int delta(pair<int, int> a, pair<int, int> b) {
  if (a.first == b.first) {
    if (a.second + 1 == b.second)
      return 1;
    else
      return 3;
  }
  if (a.first + 1 == b.first)
    return 0;
  else
    return 2;
}
int dist[3686405];
bool occ[20][20];
int power;
queue<int> bfs;
int main() {
  ios::sync_with_stdio(false);
  cin.tie(0);
  cin >> n >> m;
  for (int i = (1); i <= (n); i++) {
    string S;
    cin >> S;
    for (int j = (1); j <= (m); j++) {
      if (S[j - 1] == '@')
        fx = i, fy = j;
      else {
        if (S[j - 1] >= '1' && S[j - 1] <= '9') {
          tmp[S[j - 1] - '0'] = {i, j};
          l = max(l, S[j - 1] - '0');
        }
        mp[i][j] = (S[j - 1] == '#');
      }
    }
  }
  --l;
  power = pow(4, l - 1);
  int v = (tmp[1].first - 1) * m + tmp[1].second - 1;
  for (int i = (2); i <= (l); i++) {
    v = v * 4 + delta(tmp[i - 1], tmp[i]);
  }
  memset(dist, -1, sizeof(dist));
  bfs.push(v);
  dist[v] = 0;
  while (!bfs.empty()) {
    int st = bfs.front();
    bfs.pop();
    int x = st / power / m + 1;
    int y = st / power % m + 1;
    int tx = x, ty = y, t = st % power, p = power / 4;
    for (int i = (2); i <= (l); i++) {
      tx += dx[t / p];
      ty += dy[t / p];
      occ[tx][ty] = 1;
      t %= p;
      p /= 4;
    }
    for (int i = (0); i <= (3); i++) {
      int nx = x + dx[i];
      int ny = y + dy[i];
      if (nx <= 0 || nx > n || ny <= 0 || ny > m || mp[nx][ny] || occ[nx][ny])
        continue;
      int nst = st % power / 4;
      nst += delta({nx, ny}, {x, y}) * (power / 4);
      nst += ((nx - 1) * m + ny - 1) * power;
      if (dist[nst] == -1) {
        dist[nst] = dist[st] + 1;
        if (nx == fx && ny == fy) {
          printf("%d\n", dist[nst]);
          return 0;
        }
        bfs.push(nst);
      }
    }
    tx = x, ty = y, t = st % power, p = power / 4;
    for (int i = (2); i <= (l); i++) {
      tx += dx[t / p];
      ty += dy[t / p];
      occ[tx][ty] = 0;
      t %= p;
      p /= 4;
    }
  }
  printf("-1\n");
  return 0;
}
