Драчевка
„Драчевка“ е крстозбор со 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