Драчевка

„Драчевка“ е крстозбор со N*N полиња, во кој сите полиња содржат букви. Секој збор е претставен во ред (одлево-надесно) или колона (одгоре-надолу) и има точно N букви. Значи, во еден таков крстозбор има точно 2*N зборови.

Нам ни се дадени K понудени зборови со должина N, и треба да одбереме точно 2*N од нив за да вметнеме по еден во секој ред и секоја колона, со цел да направиме крстозбор. Во понудените К зборови може да има меѓусебно исти. Она што не' интересира е колку различни „драчевки“ можеме да составиме со овие зборови. Два крстозбора се меѓусебно различни доколку постои барем една позиција во која имаат различна буква.



Влез

Во првиот ред е даден бројот на редови и колони N (1 ≤ N ≤ 6) и бројот на зборови K (2*N ≤ K ≤ 14).
Во следните редови се дадени K зборови, составени од по точно N големи латинични букви, секој збор во посебен ред.

Забелешка.
За 10 поени ќе важи: N = 1.
За следни 15 поени ќе важи: N = 2.
За следни 30 поени ќе важи: K = 2*N, N ≤ 5, и зборовите нема да се повторуваат.
За следни 25 поени, зборовите нема да се повторуваат.



Излез

Во првиот и единствен ред отпечатете го бројот на различни крстозбори кои може да се состават со наведените зборови.



Ограничувања

Временско ограничување: 1500 milliseconds
Мемориско ограничување: 64 megabytes



Примери


влез
2 6
DA
OD
NA
ON
NO
OD
излез
2


влез
3 8
ONA
BAL
LEB
LOB
BEL
ENE
OVA
EVE


излез
4


влез
1 3
B
B
A


излез
1


Објаснување за првиот и вториот пример:
ON OD
DA NA
—-----------------------
LEB LEB LOB LOB
ONA OVA ENE EVE
BEL BEL BAL BAL



 Submit your code