休暇中の皆と同じように、牛たちは単語ゲーム Boggle の牛版、Coggle を遊びます。似たゲームで、25 個の文字のサイコロを振って次のような行列にします:
Z C C D X
K Q M N B
U O W Z Y
F C O I J
P A Q Z T
ある文字から始め、最大 8 個の隣接マスのうち 1 つへ進み続け、文字が辞書の単語をつづると単語を作って得点します。
上の行列では下側の "$C$" から "CAP"、"COW"、"COOK" を作れますが、"COD" や "PACK" は作れません。この正方形で作れる辞書の単語はすべて挙げると "CAP"、"COOK"、"COW"、"OWN"、"WIT"、"WOO"、"ZOO"、"ZOOM" です。
プログラムは dict.txt から辞書を読み込みます。辞書はアルファベット順で、単語数は 25,000 未満、各単語は高々 20 文字です。実際の辞書は添付の dict.txt にあり、判定時に作業ディレクトリで利用できます。
Bessie の成績を調べましょう。サイコロを表す 5 行 5 文字を読み、辞書の単語をいくつ作れるか求めてください。同じ単語の中で同じサイコロの文字を 2 回使ってはいけません。
作れる単語の数を数えてください。単語には複数の作り方があり得るので、作り方の数より少ないことがあります。
入力
- $1,\ldots,5$ 行目:行 $i$ には空白で区切られた 5 個の大文字があり、行列の行 $i$ を表します。
出力
- $1$ 行目:上記の規則で作れる辞書の単語の数を表す整数。
入出力例
入力 1
Z C C D X
K Q M N B
U O W Z Y
F C O I J
P A Q Z T
出力 1
8
問題出典:Traditional,2009