#include <iostream>
using namespace std;
//看博友分析 dfs
char da[10][10];
int ax[100];
int ay[100];
int jg;
int N,M;
bool check(int x,int y,int n)
{
for(int i=0;i<n;i++)
{
if(ax[i]==x || ay[i]==y)
{
return false;
}
}
return true;
}
void dfs(int x, int y, int n)
{
if(n==M)
{
jg++;
return;
}
if(x>N||y>N)
{
return;
}
if(y+1<N)
{
dfs(x,y+1,n);
}else
{
dfs(x+1,0,n);
}
if(da[x][y]=='#'&& check(x,y,n))
{
ax[n]=x;
ay[n]=y;
if(y+1<N)
{
dfs(x,y+1,n+1);
}else
{
dfs(x+1,0,n+1);
}
}
}
int main()
{
while(cin>>N>>M)
{
if(N==-1 && M==-1)
{
break;
}
for(int i=0;i<N;i++)
{
for(int j=0;j<N;j++)
{
cin>>da[i][j];
}
}
jg=0;
dfs(0,0,0);
cout<<jg<<endl;
}
return 0;
}