#include<stdio.h> //POJ 1321-棋盘问题 简单搜索DFS
#include<string.h> // http://acm.pku.edu.cn/JudgeOnline/problem?id=1321
char c[10][10];
int f,ans,vis[20],n,k;
void dfs(int m,int i)
{
int nn,l,ii;
//printf("dffvcfb %d %d\n",m+1,i+1);
if(vis[i]==1) return; //vis[i]为当前列数标记
f++,vis[i]=1; //f为已摆放棋子个数
if(f==k)
{
//printf("dffvcfb\n");
ans++,f--,vis[i]=0;
return;
}
for(nn=m+1;nn<n;nn++) //重复遍历,从下一行开始
{
l=strlen(c[nn]);
for(ii=0;ii<l;ii++)
if(c[nn][ii]=='#') dfs(nn,ii);
}
f--;
vis[i]=0; // 没这个 wa了几次 ~~
return;
}
int main()
{
int m,l,i;
while(~scanf("%d%d",&n,&k)) //n为行列数,k为需摆放棋子个数
{
if(n==-1||k==-1) break;
ans=0,f=0;
memset(c,0,sizeof(c));
memset(vis,0,sizeof(vis));
getchar();
for(m=0;m<n;m++)
gets(c[m]); //存数据
for(m=0;m<n;m++) //遍历每个'#',将其作为第一个放置的棋子
{
l=strlen(c[m]);
for(i=0;i<l;i++)
if(c[m][i]=='#')
{
//printf("%d\n",m+1);
dfs(m,i);
memset(vis,0,sizeof(vis));
}
}
printf("%d\n",ans);
}
}
/*
2 1
#.
.#
4 3
#..#
..#.
.#..
#..#
4 2
...#
.##.
.#..
##.#
4 2
...#
..#.
.#..
#...
4 2
...#
.#..
.#..
#...
4 2
....
....
.#..
#...
2 2
##
##
3 2
###
.##
###
-1 -1
*/
#include<string.h> // http://acm.pku.edu.cn/JudgeOnline/problem?id=1321
char c[10][10];
int f,ans,vis[20],n,k;
void dfs(int m,int i)
{
int nn,l,ii;
//printf("dffvcfb %d %d\n",m+1,i+1);
if(vis[i]==1) return; //vis[i]为当前列数标记
f++,vis[i]=1; //f为已摆放棋子个数
if(f==k)
{
//printf("dffvcfb\n");
ans++,f--,vis[i]=0;
return;
}
for(nn=m+1;nn<n;nn++) //重复遍历,从下一行开始
{
l=strlen(c[nn]);
for(ii=0;ii<l;ii++)
if(c[nn][ii]=='#') dfs(nn,ii);
}
f--;
vis[i]=0; // 没这个 wa了几次 ~~
return;
}
int main()
{
int m,l,i;
while(~scanf("%d%d",&n,&k)) //n为行列数,k为需摆放棋子个数
{
if(n==-1||k==-1) break;
ans=0,f=0;
memset(c,0,sizeof(c));
memset(vis,0,sizeof(vis));
getchar();
for(m=0;m<n;m++)
gets(c[m]); //存数据
for(m=0;m<n;m++) //遍历每个'#',将其作为第一个放置的棋子
{
l=strlen(c[m]);
for(i=0;i<l;i++)
if(c[m][i]=='#')
{
//printf("%d\n",m+1);
dfs(m,i);
memset(vis,0,sizeof(vis));
}
}
printf("%d\n",ans);
}
}
/*
2 1
#.
.#
4 3
#..#
..#.
.#..
#..#
4 2
...#
.##.
.#..
##.#
4 2
...#
..#.
.#..
#...
4 2
...#
.#..
.#..
#...
4 2
....
....
.#..
#...
2 2
##
##
3 2
###
.##
###
-1 -1
*/