C1743 [CEOI2019Day1] Cubeword

内存限制:1024 MB 时间限制:1100 ms

题目描述

A cubeword is a special type of a crossword. When building a cubeword, you start by choosing a positive integer $a$: the side length of the cube. Then, you build a big cube consisting of $a×a×a$ unit cubes. This big cube has $12$ edges. Then, you discard all unit cubes that do not touch the edges of the big cube. The figure below shows the object you will get for $a = 6$.

image.png

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 $a = 6$ in which some unit cubes already have assigned letters. You can already read the words ‘SUBMIT’, ‘ACCEPT’ and ‘TURING’ along three edges of the big cube.

image.png

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 $998,244,353$.

If one cubeword can be obtained from another by rotation or mirroring, they are considered distinct.

输入格式

The first line contains a single integer $n (1 ≤ n ≤ 100,000)$ – the number of words.

Then, $n$ lines follow. Each of these lines contains one word that can appear on the edges of the big cube. The length of each word is between $3$ and $10$, inclusive.

It is guaranteed that all words are different.

输出

Output a single integer, the number of distinct cubewords for the given list of valid words modulo $998,244,353$.

样例

样例输入 1

1 radar

样例输出 1

1

样例输入 2

1 robot

样例输出 2

2

样例输入 3

2 FLOW WOLF

样例输出 3

2

样例输入 4

2 baobab bob

样例输出 4

4097

样例输入 5

3 TURING SUBMIT ACCEPT

样例输出 5

162

样例输入 6

3 MAN1LA MAN6OS AN4NAS

样例输出 6

114

提示

Subtask 1 (21 points): the words consist only of letters ‘a’ - ‘f’ (lowercase)

Subtask 2 (29 points): the words consist only of letters ‘a’ - ‘p’ (lowercase)

Subtask 3 (34 points): the words consist of letters ‘a’ - ‘p’ (lowercase) and ‘A’ - ‘P’ (uppercase)

Subtask 4 (16 points): the words consist of letters ‘a’ - ‘z’ (lowercase), ‘A’ - ‘Z’ (uppercase) and digits ‘0’ - ‘9’