A cubeword is a special type of a crossword. When building a cubeword, you start by choosing a positive integer
Finally, you assign a letter to each of the unit cubes in the object. You must get a meaningful word along each edge of the big cube. Each edge can be read in either direction, and it is sufficient if one of the two directions of reading gives a meaningful word.
The figure below shows the object for SUBMIT
, ACCEPT
and TURING
along three edges of the big cube.
You are given a list of valid words. Each word from the wordlist may appear on arbitrarily many edges of a valid
cubeword. Find and report the number of different cubewords that can be constructed, modulo
If one cubeword can be obtained from another by rotation or mirroring, they are considered distinct.
Input
The first line contains a single integer
Then,
It is guaranteed that all words are different.
Output
Output a single integer, the number of distinct cubewords for the given list of valid words modulo
Scoring
Subtask a
- f
(lowercase)
Subtask a
- p
(lowercase)
Subtask a
- p
(lowercase) and A
- P
(uppercase)
Subtask a
- z
(lowercase), A
- Z
(uppercase) and digits 0
- 9
Sample Input 1
1
radar
Sample Output 1
1
Sample Input 2
1
robot
Sample Output 2
2
Sample Input 3
2
FLOW
WOLF
Sample Output 3
2
Sample Input 4
2
baobab
bob
Sample Output 4
4097
Sample Input 5
3
TURING
SUBMIT
ACCEPT
Sample Output 5
162
Sample Input 6
3
MAN1LA
MAN6OS
AN4NAS
Sample Output 6
114
Note
In the first sample, the only possibility is for the word radar
to be on each edge of the cube.
In the second sample, there are two cubes, which are just rotations of each other – the word robot
is on every
edge, and the difference between the two cubes is whether the lower left front corner contains r
or t
.
The third sample is similar to the second one. The fact that we can read the word on each edge in both directions does not affect the answer.
In the fourth sample, there is one cube with the word bob
on each edge. There are also baobab
on each edge. (For each of the baobab
can appear.)
Comments