你正在玩一個使用多顆公平六面骰的遊戲。每顆骰子的每一面都有一個符號。遊戲目標是擲骰子,並用每顆骰子頂面的符號組成一個合法單字。如果無法組成單字,可以重新擲骰子再試一次。
圖 K.1:五顆骰子組成與範例輸入 1 對應的合法單字。
假設有五顆骰子:其中一顆包含字母 A、B、C、D、E 和 P(簡記為 ABCDEP),其他骰子分別包含 AEHOXU、AISOLR、ABCDEF 和 ABCSCC。第一次投擲後,各骰子的頂面字母依序為 P、X、R、E 和 S。這些字母無法排列成合法單字,因此你決定保留 P、S 和 E,重擲其他骰子,嘗試組成 PARSE、PAUSE、PHASE、POISE、PROSE、PULSE 或 PURSE 等單字。兩顆骰子擲出 E 和 A,得到五個字母 P、E、A、E 和 S。你仍想不出合法單字,因此決定保留四個字母,只重擲最後一顆骰子,它有三個面是字母 C。這樣便有 50% 的機率可以組成最終的合法單字 PEACE,如圖 K.1 所示。
擲一顆骰子時,每一面朝上的機率相同。假設使用最優策略,組成合法單字所需的投擲次數期望值是多少?
輸入格式
輸入第一行包含兩個數 $d$ 與 $w$,其中 $d$($1 \le d \le 6$)是骰子數量,$w$($1 \le w \le 2 \cdot 10^5$)是字典中合法單字的數量。接下來 $d$ 行,每行有 6 個符號,分別對應骰子的各面。最後 $w$ 行包含字典中 $w$ 個相異的合法單字。每個單字恰好有 $d$ 個符號。
輸入中的所有符號都是大寫字母(A–Z)或數字(0–9)。
輸出格式
如果可以組成合法單字,輸出使用最優策略時組成合法單字所需的投擲次數期望值。否則輸出 impossible。答案的絕對誤差或相對誤差至多為 $10^{-6}$。
範例
輸入格式 1
5 8 ABCDEP AEHOXU AISOLR ABCDEF ABCSCC PARSE PAUSE PHASE POISE PROSE PULSE PURSE PEACE
輸出格式 1
9.677887141
輸入格式 2
2 1 AAAAAA BBBBBB AB
輸出格式 2
1.0
輸入格式 3
3 1 123456 123456 123456 666
輸出格式 3
10.555444555
輸入格式 4
2 1 ABCDEF GHI234 AB
輸出格式 4
impossible