#include<bits/stdc++.h>
#define mp make_pair
#define PII pair<int,int>
#define fi first
#define se second
using namespace std;
const int NMAX=2005;
const int LIMIT=40005;
int n,m,dp[5][NMAX][NMAX];
char s[NMAX][NMAX];
bool viz[NMAX][NMAX];
queue<PII>Q[LIMIT];
int dx[]={ -1 , 0 , 1 , 0 };
int dy[]={ 0 , 1 , 0 , -1 };
bool Interior(int x,int y)
{
if (x>=1 && x<=n && y>=1 && y<=m) return 1;
return 0;
}
void Go(int val)
{
int i,j,kx,ky;
PII aux;
for (j=0;j<LIMIT;j++)
{
while (!Q[j].empty())
{
aux=Q[j].front();
Q[j].pop();
for (i=0;i<4;i++)
{
kx=aux.fi+dx[i];
ky=aux.se+dy[i];
if (Interior(kx,ky) && !viz[kx][ky] && s[kx][ky]!='#')
{
viz[kx][ky]=1;
dp[val][kx][ky]=dp[val][aux.fi][aux.se];
if (s[kx][ky]=='.') dp[val][kx][ky]++;
Q[dp[val][kx][ky]].push(mp(kx,ky));
}
}
}
}
}
int main()
{
int i,j,l,k,sol,cnt;
cin.sync_with_stdio(false);
cin>>n>>m;
for (i=1;i<=n;i++)
cin>>(s[i]+1);
for (k=1;k<=3;k++)
{
for (i=1;i<=n;i++)
for (j=1;j<=m;j++)
{
viz[i][j]=0;dp[k][i][j]=1<<20;
if (s[i][j]==('0'+k))
{
viz[i][j]=1;dp[k][i][j]=0;
Q[0].push(mp(i,j));
}
}
Go(k);
}
sol=1<<20;
for (i=1;i<=n;i++)
for (j=1;j<=m;j++)
if (s[i][j]!='#')
{
if (s[i][j]=='.') cnt=2;
else cnt=0;
// cout<<i<<" "<<j<<" "<<cnt<<" "<<(dp[1][i][j]+dp[2][i][j]+dp[3][i][j]-cnt)<<"\n";
sol=min(sol,dp[1][i][j]+dp[2][i][j]+dp[3][i][j]-cnt);
}
if (sol==(1<<20)) {cout<<"-1\n";return 0;}
cout<<sol<<"\n";
return 0;
}
I2luY2x1ZGU8Yml0cy9zdGRjKysuaD4KI2RlZmluZSBtcCBtYWtlX3BhaXIKI2RlZmluZSBQSUkgcGFpcjxpbnQsaW50PgojZGVmaW5lIGZpIGZpcnN0CiNkZWZpbmUgc2Ugc2Vjb25kCnVzaW5nIG5hbWVzcGFjZSBzdGQ7Cgpjb25zdCBpbnQgTk1BWD0yMDA1Owpjb25zdCBpbnQgTElNSVQ9NDAwMDU7CgppbnQgbixtLGRwWzVdW05NQVhdW05NQVhdOwpjaGFyIHNbTk1BWF1bTk1BWF07CmJvb2wgdml6W05NQVhdW05NQVhdOwpxdWV1ZTxQSUk+UVtMSU1JVF07CmludCBkeFtdPXsgLTEgLCAwICwgMSAsIDAgfTsKaW50IGR5W109eyAwICwgMSAsIDAgLCAtMSB9OwoKYm9vbCBJbnRlcmlvcihpbnQgeCxpbnQgeSkKewogICAgaWYgKHg+PTEgJiYgeDw9biAmJiB5Pj0xICYmIHk8PW0pIHJldHVybiAxOwogICAgcmV0dXJuIDA7Cn0KCnZvaWQgR28oaW50IHZhbCkKewogICAgaW50IGksaixreCxreTsKICAgIFBJSSBhdXg7CiAgICBmb3IgKGo9MDtqPExJTUlUO2orKykKICAgICAgICB7CiAgICAgICAgICAgIHdoaWxlICghUVtqXS5lbXB0eSgpKQogICAgICAgICAgICB7CiAgICAgICAgICAgICAgICBhdXg9UVtqXS5mcm9udCgpOwogICAgICAgICAgICAgICAgUVtqXS5wb3AoKTsKICAgICAgICAgICAgICAgIGZvciAoaT0wO2k8NDtpKyspCiAgICAgICAgICAgICAgICAgICAgewogICAgICAgICAgICAgICAgICAgICAgIGt4PWF1eC5maStkeFtpXTsKICAgICAgICAgICAgICAgICAgICAgICBreT1hdXguc2UrZHlbaV07CiAgICAgICAgICAgICAgICAgICAgICAgaWYgKEludGVyaW9yKGt4LGt5KSAmJiAhdml6W2t4XVtreV0gJiYgc1treF1ba3ldIT0nIycpCiAgICAgICAgICAgICAgICAgICAgICAgICAgICB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdml6W2t4XVtreV09MTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkcFt2YWxdW2t4XVtreV09ZHBbdmFsXVthdXguZmldW2F1eC5zZV07CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKHNba3hdW2t5XT09Jy4nKSBkcFt2YWxdW2t4XVtreV0rKzsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBRW2RwW3ZhbF1ba3hdW2t5XV0ucHVzaChtcChreCxreSkpOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgfQogICAgICAgIH0KfQoKaW50IG1haW4oKQp7CiAgICBpbnQgaSxqLGwsayxzb2wsY250OwoKICAgIGNpbi5zeW5jX3dpdGhfc3RkaW8oZmFsc2UpOwogICAgY2luPj5uPj5tOwogICAgZm9yIChpPTE7aTw9bjtpKyspCiAgICAgICAgY2luPj4oc1tpXSsxKTsKCiAgICBmb3IgKGs9MTtrPD0zO2srKykKICAgIHsKICAgICAgICBmb3IgKGk9MTtpPD1uO2krKykKICAgICAgICAgICAgZm9yIChqPTE7ajw9bTtqKyspCiAgICAgICAgICAgICAgICB7CiAgICAgICAgICAgICAgICAgICAgdml6W2ldW2pdPTA7ZHBba11baV1bal09MTw8MjA7CiAgICAgICAgICAgICAgICAgICAgaWYgKHNbaV1bal09PSgnMCcraykpCiAgICAgICAgICAgICAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZpeltpXVtqXT0xO2RwW2tdW2ldW2pdPTA7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICBRWzBdLnB1c2gobXAoaSxqKSk7CiAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgIH0KICAgICAgICBHbyhrKTsKICAgIH0KICAgIHNvbD0xPDwyMDsKICAgIGZvciAoaT0xO2k8PW47aSsrKQogICAgICAgIGZvciAoaj0xO2o8PW07aisrKQogICAgICAgICAgICBpZiAoc1tpXVtqXSE9JyMnKQogICAgICAgICAgICAgICAgewogICAgICAgICAgICAgICAgICAgIGlmIChzW2ldW2pdPT0nLicpIGNudD0yOwogICAgICAgICAgICAgICAgICAgIGVsc2UgY250PTA7CiAgICAgICAgICAgICAgICAgICAvLyBjb3V0PDxpPDwiICI8PGo8PCIgIjw8Y250PDwiICI8PChkcFsxXVtpXVtqXStkcFsyXVtpXVtqXStkcFszXVtpXVtqXS1jbnQpPDwiXG4iOwogICAgICAgICAgICAgICAgICAgIHNvbD1taW4oc29sLGRwWzFdW2ldW2pdK2RwWzJdW2ldW2pdK2RwWzNdW2ldW2pdLWNudCk7CiAgICAgICAgICAgICAgICB9CiAgICBpZiAoc29sPT0oMTw8MjApKSB7Y291dDw8Ii0xXG4iO3JldHVybiAwO30KICAgIGNvdXQ8PHNvbDw8IlxuIjsKICAgIHJldHVybiAwOwp9
Main.java:1: error: illegal character: '#'
#include<bits/stdc++.h>
^
Main.java:1: error: class, interface, or enum expected
#include<bits/stdc++.h>
^
Main.java:2: error: illegal character: '#'
#define mp make_pair
^
Main.java:3: error: illegal character: '#'
#define PII pair<int,int>
^
Main.java:4: error: illegal character: '#'
#define fi first
^
Main.java:5: error: illegal character: '#'
#define se second
^
Main.java:8: error: class, interface, or enum expected
const int NMAX=2005;
^
Main.java:9: error: class, interface, or enum expected
const int LIMIT=40005;
^
Main.java:11: error: class, interface, or enum expected
int n,m,dp[5][NMAX][NMAX];
^
Main.java:12: error: class, interface, or enum expected
char s[NMAX][NMAX];
^
Main.java:13: error: class, interface, or enum expected
bool viz[NMAX][NMAX];
^
Main.java:14: error: class, interface, or enum expected
queue<PII>Q[LIMIT];
^
Main.java:15: error: class, interface, or enum expected
int dx[]={ -1 , 0 , 1 , 0 };
^
Main.java:16: error: class, interface, or enum expected
int dy[]={ 0 , 1 , 0 , -1 };
^
Main.java:18: error: class, interface, or enum expected
bool Interior(int x,int y)
^
Main.java:21: error: class, interface, or enum expected
return 0;
^
Main.java:22: error: class, interface, or enum expected
}
^
Main.java:27: error: class, interface, or enum expected
PII aux;
^
Main.java:28: error: class, interface, or enum expected
for (j=0;j<LIMIT;j++)
^
Main.java:28: error: class, interface, or enum expected
for (j=0;j<LIMIT;j++)
^
Main.java:28: error: class, interface, or enum expected
for (j=0;j<LIMIT;j++)
^
Main.java:33: error: class, interface, or enum expected
Q[j].pop();
^
Main.java:34: error: class, interface, or enum expected
for (i=0;i<4;i++)
^
Main.java:34: error: class, interface, or enum expected
for (i=0;i<4;i++)
^
Main.java:34: error: class, interface, or enum expected
for (i=0;i<4;i++)
^
Main.java:37: error: class, interface, or enum expected
ky=aux.se+dy[i];
^
Main.java:38: error: class, interface, or enum expected
if (Interior(kx,ky) && !viz[kx][ky] && s[kx][ky]!='#')
^
Main.java:41: error: class, interface, or enum expected
dp[val][kx][ky]=dp[val][aux.fi][aux.se];
^
Main.java:42: error: class, interface, or enum expected
if (s[kx][ky]=='.') dp[val][kx][ky]++;
^
Main.java:43: error: class, interface, or enum expected
Q[dp[val][kx][ky]].push(mp(kx,ky));
^
Main.java:44: error: class, interface, or enum expected
}
^
Main.java:54: error: class, interface, or enum expected
cin.sync_with_stdio(false);
^
Main.java:55: error: class, interface, or enum expected
cin>>n>>m;
^
Main.java:56: error: class, interface, or enum expected
for (i=1;i<=n;i++)
^
Main.java:56: error: class, interface, or enum expected
for (i=1;i<=n;i++)
^
Main.java:56: error: class, interface, or enum expected
for (i=1;i<=n;i++)
^
Main.java:59: error: class, interface, or enum expected
for (k=1;k<=3;k++)
^
Main.java:59: error: class, interface, or enum expected
for (k=1;k<=3;k++)
^
Main.java:59: error: class, interface, or enum expected
for (k=1;k<=3;k++)
^
Main.java:61: error: class, interface, or enum expected
for (i=1;i<=n;i++)
^
Main.java:61: error: class, interface, or enum expected
for (i=1;i<=n;i++)
^
Main.java:62: error: class, interface, or enum expected
for (j=1;j<=m;j++)
^
Main.java:62: error: class, interface, or enum expected
for (j=1;j<=m;j++)
^
Main.java:64: error: class, interface, or enum expected
viz[i][j]=0;dp[k][i][j]=1<<20;
^
Main.java:65: error: class, interface, or enum expected
if (s[i][j]==('0'+k))
^
Main.java:67: error: class, interface, or enum expected
viz[i][j]=1;dp[k][i][j]=0;
^
Main.java:68: error: class, interface, or enum expected
Q[0].push(mp(i,j));
^
Main.java:69: error: class, interface, or enum expected
}
^
Main.java:72: error: class, interface, or enum expected
}
^
Main.java:74: error: class, interface, or enum expected
for (i=1;i<=n;i++)
^
Main.java:74: error: class, interface, or enum expected
for (i=1;i<=n;i++)
^
Main.java:74: error: class, interface, or enum expected
for (i=1;i<=n;i++)
^
Main.java:75: error: class, interface, or enum expected
for (j=1;j<=m;j++)
^
Main.java:75: error: class, interface, or enum expected
for (j=1;j<=m;j++)
^
Main.java:79: error: class, interface, or enum expected
else cnt=0;
^
Main.java:81: error: class, interface, or enum expected
sol=min(sol,dp[1][i][j]+dp[2][i][j]+dp[3][i][j]-cnt);
^
Main.java:82: error: class, interface, or enum expected
}
^
Main.java:83: error: class, interface, or enum expected
if (sol==(1<<20)) {cout<<"-1\n";return 0;}
^
Main.java:83: error: class, interface, or enum expected
if (sol==(1<<20)) {cout<<"-1\n";return 0;}
^
Main.java:85: error: class, interface, or enum expected
return 0;
^
Main.java:86: error: class, interface, or enum expected
}
^
61 errors