#include<bits/stdc++.h>
using namespace std;
typedef long long ll;
ll n, m, sx, sy, gx, gy;
int ans = INT_MAX;
bool vis[101][101], mp[101][101], a[101][101];
int d[4][2] = {{0, 1}, {1, 0}, {-1, 0}, {0, -1}};
void dfs(int x, int y, int step){
if(x == gy and y == gx){
ans = min(ans, step);
return;
}
for(int i = 0; i < 4; i++){
int dx = x + d[i][0];
int dy = y + d[i][1];
if(step > a[dx][dy]) continue;
if(mp[dx][dy] == 0 && !vis[dx][dy] && dx <= n && dy <= m){
a[dx][dy] = step;
vis[dx][dy] = 1;
dfs(dx, dy, step+1);
vis[dx][dy] = 0;
}
}
}
int main(){
ios::sync_with_stdio(false);
cin.tie(0), cout.tie(0);
cin >> n >> m >> sy >> sx >> gy >> gx;
for(int i = 1; i <= n; i++){
string s;
cin >> s;
for(int j = 1; j <= m; j++)
if(s[j - 1] == '#') mp[i][j] = 1;
}
memset(a, 128, sizeof(a));
dfs(sy, sx, 0);
cout << ans << endl;
return 0;
}
原先不加剪枝TLE
加了之后样例不过QwQ