#include<bits/stdc++.h>
using namespace std;
char mp[10][10];
int r[100][3];
int n,cnt,num;
bool fun(int x,int y,char k){
for(int i=1;i<=n;i++){
for(int j=1;j<=n;j++){
if(i==x&&mp[i][j]==k){
return false;
}
if(j==y&&mp[i][j]==k){
return false;
}
if(i-j==x-y&&mp[i][j]==k){
return false;
}
if(i+j==x+y&&mp[i][j]==k){
return false;
}
}
}
return true;
}
void dfs(int k){
for(int i=1;i<=n;i++){
if(fun(r[k][1],r[k][2],i+'0')){
mp[r[k][1]][r[k][2]]=i+'0';
if(k==num){
cnt++;
}else{
dfs(k+1);
}
mp[r[k][1]][r[k][2]]=0;
}
}
}
int main(){
scanf("%d",&n);
for(int i=1;i<=n;i++){
for(int j=1;j<=n;j++){
cin>>mp[i][j];
if(mp[i][j]=='*'){
r[++num][1]=i;
r[num][2]=j;
}
}
}
dfs(1);
printf("%d",cnt);
return 0;
}
TLE了(哭
有帮助的话,小号悬一个关注