#include<cstdio>
#include<cstring>
using namespace std;
int n,k,ans;
char Map[20][20],visL[11]; //标记列
void dfs(int step,int i) // step已放的棋子数, i 当前第几行
{
if(step==k)
{
ans++;
return;
}
if(i>n)return;
for(int j=1;j<=n;j++)
{
if(Map[i][j]=='#'&&!visL[j])
{
visL[j]=1;
dfs(step+1,i+1); //i行放棋子
visL[j]=0;
}
}
dfs(step,i+1); //i行不放棋子
}
int main()
{
while(~scanf("%d%d",&n,&k))
{
if(n==-1&&k==-1)break;
for(int i=1;i<=n;i++)
scanf("%s",Map[i]+1);
memset(visL,0,sizeof(visL));
ans=0;
dfs(0,1);
printf("%d\n",ans);
}
return 0;
}