#include<bits/stdc++.h>
using namespace std;
int n,m,par[220][220],num[220][220],f,anss;
int xf[10]={0,-1, 0, 1, 0};
int yf[10]={0, 0, 1, 0,-1};
string s;
void HH(int x,int y,int f,int ans)
{
anss=max(anss,ans);
if(par[x+xf[f]][y+yf[f]]==0)
{
int f1=(f-1+4)%4;if(f1==0)f1=4;
int x1=x+xf[f1],y1=y+yf[f1];
if(x1>=1&&x1<=n&&y1>=1&&y1<=n&&par[x1][y1]==1&&num[x1][y1]==0)
{
num[x1][y1]=1;//cout<<"{"<<x1<<","<<y1<<">>";
HH(x1,y1,f1,ans+1);
num[x1][y1]=0;
}
int f2=(f+1+4)%4;if(f2==0)f2=4;
int x2=x+xf[f2],y2=y+yf[f2];
if(x2>=1&&x2<=n&&y2>=1&&y2<=n&&par[x2][y2]==1&&num[x2][y2]==0)
{
num[x2][y2]=1;//cout<<"{"<<x2<<","<<y2<<">>";
HH(x2,y2,f2,ans+1);
num[x2][y2]=0;
}
}
else if(num[x+xf[f]][y+yf[f]]==0)
{
//cout<<x+xf[f]<<","<<y+yf[f]<<">>";
num[x+xf[f]][y+yf[f]]=1;
HH(x+xf[f],y+yf[f],f,ans+1);
num[x+xf[f]][y+yf[f]]=0;
}
//else cout<<ans<<endl;
}
int main()
{
cin>>n>>m;
for(int i=1;i<=m;i++)
{
cin>>s;
par[s[1]-'0'][s[0]-'A'+1]=1;
}
for(int i=1;i<=n;i++)
{
for(int j=1;j<=n;j++)par[i][j]=1-par[i][j];
}
num[1][1]=1;
HH(1,1,2,1);
HH(1,1,3,1);
cout<<anss;
return 0;
}
可能有点乱,谅解下