def space_input(p=''): s=raw_input(p).split() for i in range(len(s)): s[i]=eval(s[i]) return tuple(s) class Mymap: def __init__(self,l,n): self.cnum=1 for i in range(1,n+1): self.cnum*=i self.num=n self.resultnum=0 self.linenum=l self.line=set(range(l)) self.map=[[' ' for i in range(l)] for i in range(l)] def getmap(self): for i in range(self.linenum): line=raw_input() for j in range(self.linenum): self.map[i][j]=line[j] def getresult(self,num,x,y): if num: for i in x: for j in y: if self.map[i][j]=='#': self.getresult(num-1,x-{i},y-{j}) else: self.resultnum+=1 l,n=space_input() while l!=-1 or n!=-1: a=Mymap(l,n) a.getmap() a.getresult(a.num,a.line,a.line) print a.resultnum/a.cnum l,n=space_input() /************************************************************** Problem: 2127 User: admin Language: Python Result: Wrong Answer ****************************************************************/