谁能救我
#include<bits/stdc++.h>
using ll=long long;
using db=double;
using ldb=long double;
using namespace std;
char a[1005][1005];
ll a1[1005][1005];
ll xx[4]={0,0,1,-1};
ll yy[4]={-1,1,0,0};
struct w{
ll x,y;
};
int main(){
ll n,k;
cin>>n>>k;
for(ll i=0;i<n;i++){
for(ll j=0;j<n;j++){
cin>>a[i][j];
}
}queue<w> q;
q.push({0,0});
a1[0][0]=0;
ll h=1;
while(q.size()){
w m=q.front();
q.pop();
for(ll i=0;i<4;i++){
if(m.x==n-1 && m.y==n-1){
cout<<a1[m.x][m.y];
return 0;
}ll x1=m.x+xx[i],y1=m.y+yy[i];
if(!(a[x1][y1]=='#' || (a[x1][y1]=='X' && h<=1)) && x1<n && x1>=0 && y1<n && y1>=0){
q.push({x1,y1});
if(a[x1][y1]=='%') h+=k;
if(h>1) h--;
a1[x1][y1]=a1[m.x][m.y]+1;
}
}
}return 0;
}