Language: C++

#include <iostream>
#include<algorithm>
#include<cstdio>
#include<cstring>

using namespace std;
char ch[1006][1006];
int x,y,x1,y1;
int h,w;
int falg=0;
void find1(int n,int m)
{
    ch[n][m]='1';
    if(n-1>=0&&ch[n-1][m]=='.')
        find1(n-1,m);
    if(n+1<h&&ch[n+1][m]=='.')
        find1(n+1,m);
    if(m-1>=0&&ch[n][m-1]=='.')
        find1(n,m-1);
    if(m+1<w&&ch[n][m+1]=='.')
        find1(n,m+1);
}
void find2(int n,int m)
{
    if(ch[n][m]!='1')
        return 0;
    if(n-2>=0&&m-2>=0)
        if(ch[n-2][m-2]=='.')
            {ch[n-2][m-2]='1'; falg=1;}
    if(n-2>=0&&m-1>=0)
        if(ch[n-2][m-1]=='.')
            {ch[n-2][m-1]='1'; falg=1;}
    if(n-2>=0)
        if(ch[n-2][m]=='.')
            {ch[n-2][m]='1'; falg=1;}
    if(n-2>=0&&m+1<w)
        if(ch[n-2][m+1]=='.')
            {ch[n-2][m+1]='1'; falg=1;}
    if(n-2>=0&&m+2<w)
        if(ch[n-2][m+2]=='.')
            {ch[n-2][m+2]='1'; falg=1;}

    if(n-1>=0&&m-2>=0)
        if(ch[n-2][m-2]=='.')
            {ch[n-2][m-2]='1'; falg=1;}
    if(n-1>=0&&m-1>=0)
        if(ch[n-2][m-1]=='.')
            {ch[n-2][m-1]='1'; falg=1;}
    if(n-1>=0)
        if(ch[n-2][m]=='.')
            {ch[n-2][m]='1'; falg=1;}
    if(n-1>=0&&m+1<w)
        if(ch[n-2][m+1]=='.')
            {ch[n-2][m+1]='1'; falg=1;}
    if(n-1>=0&&m+2<w)
        if(ch[n-2][m+2]=='.')
            {ch[n-2][m+2]='1'; falg=1;}

    if(m-2>=0)
        if(ch[n][m-2]=='.')
            {ch[n][m-2]='1'; falg=1;}
    if(m-1>=0)
        if(ch[n][m-1]=='.')
            {ch[n][m-1]='1'; falg=1;}
    if(m+1<w)
        if(ch[n][m+1]=='.')
            {ch[n][m+1]='1'; falg=1;}
    if(m+2<w)
        if(ch[n][m+2]=='.')
            {ch[n][m+2]='1'; falg=1;}

    if(n+1<h&&m-2>=0)
        if(ch[n-2][m-2]=='.')
            {ch[n-2][m-2]='1'; falg=1;}
    if(n+1<h&&m-1>=0)
        if(ch[n-2][m-1]=='.')
            {ch[n-2][m-1]='1'; falg=1;}
    if(n+1<h)
        if(ch[n-2][m]=='.')
            {ch[n-2][m]='1'; falg=1;}
    if(n+1<0&&m+1<w)
        if(ch[n-2][m+1]=='.')
            {ch[n-2][m+1]='1'; falg=1;}
    if(n+1<h&&m+2<w)
        if(ch[n-2][m+2]=='.')
            {ch[n-2][m+2]='1'; falg=1;}

    if(n+2<h&&m-2>=0)
        if(ch[n-2][m-2]=='.')
            {ch[n-2][m-2]='1'; falg=1;}
    if(n+2<h&&m-1>=0)
        if(ch[n-2][m-1]=='.')
            {ch[n-2][m-1]='1'; falg=1;}
    if(n+2<h)
        if(ch[n-2][m]=='.')
            {ch[n-2][m]='1'; falg=1;}
    if(n+2<0&&m+1<w)
        if(ch[n-2][m+1]=='.')
            {ch[n-2][m+1]='1'; falg=1;}
    if(n+2<h&&m+2<w)
        if(ch[n-2][m+2]=='.')
            {ch[n-2][m+2]='1'; falg=1;}

}
int main()
{
//    int h,w;
    scanf("%d%d",&h,&w);
    int i;
    scanf("%d%d%d%d",&x,&y,&x1,&y1);
    for(i=0;i<h;i++)
    {
        scanf("%s",ch[i]);
    }

    find1(x-1,y-1);
    int sum=0;
    while(1)
    {   falg=1;
        if(ch[x1-1][y1-1]=='1')
           break;
        int j;
        falg=0;
        for(i=0;i<h;i++)
        {
            for(j=0;j<w;j++)
            {
                find2(i,j);
            }
        }
        if(falg==0)
        {
            printf("-1\n");
            break;
        }
        sum++;
    }
    if(falg==1)
        printf("%d\n",sum);
    return 0;
}


Compiler output:
a.cc:8:12: warning: built-in function 'y1' declared as non-function [-Wbuiltin-declaration-mismatch]
    8 | int x,y,x1,y1;
      |            ^~
a.cc: In function 'void find2(int, int)':
a.cc:26:16: error: return-statement with a value, in function returning 'void' [-fpermissive]
   26 |         return 0;
      |                ^