#P7086. [NWRRC 2013] Heavy Chain Clusterization

[NWRRC 2013] Heavy Chain Clusterization

题目描述

A group of biologists is trying to find a cure for a viral disease. They have tried many antibodies of various origins that could potentially fight the viral antigens, and have selected nn antibodies that seem to work best during experiments.

Each antibody is identified by its heavy chain -- a sequence of amino acids.

The set of antibodies form a similarity cluster, if at least one of the following holds:

k-prefixes (first kk amino acids) of all their heavy chains are equal;

k-suffixes (last kk amino acids) of all their heavy chains are equal.

In order to simplify the future research, biologists want to group antibodies to similarity clusters.

You need to split the given antibodies to a minimum number of similarity clusters.

输入格式

The first line contains two integers nn and kk -- the number of heavy chains and the length of sequence of amino acids to coincide (1n5000,1k550)(1 \le n \le 5 000 , 1 \le k \le 550) .

The following nn lines contain sequences of amino acids that form heavy chains of antibodies. Each amino acid described with an uppercase English letter. Each heavy chain contains at least kk and no more than 550550 amino acids.

输出格式

The first line of output must contain a single integer -- the minimum number of similarity clusters. The following lines must contain descriptions of clusters, one per line.

Each description starts with mim_i -- the number of antibodies in the cluster and is followed by mim_i integers -- numbers of these antibodies. Antibodies are numbered in the order of appearance in the input starting from one.

Each antibody must be present in exactly one cluster.

4 1
AA
AB
BB
BA

2
2 1 2
2 3 4

3 2
ABA
BAB
XY

3
1 1
1 2
1 3

提示

Time limit: 2 s, Memory limit: 256 MB.