MKOKOS - KOKOS

no tags 

English Vietnamese

 

A set of N words is given with the length of each word being exactly 2K characters.
A directed graph with each vertex containing a single letter is called a "kokos" if, for each word in the set, there exists a directed path in the graph such that the labels on the vertices along that path form the word. Additionally, for all vertices on that path the following conditions have to be satisfied:


·  the in-degree of the first vertex is 0
·  the in-degrees of the next K-1 vertices is 1
·  the out-degrees of the next K-1 vertices is 1
·  the out-degree of the last vertex is 0

In other words, paths can fork only on the first K letters, and they can meet only on the last K letters. For the given set of the words, we say that the "kokos" is minimal if the total number of vertices is as small as possible.

Write a program that will find the number of vertices in a minimal kokos.
 
An example of a minimal kokos (the set of the words is from the third example):

It may seem that we can compact the graph like this:

However, this graph is not a kokos because paths meet on the 4th  letter (D), and they fork on the 6th  letter (E).

Input

The first line of input contains two integers N and K, 1 ≤ N ≤ 10 000, 1 ≤ K ≤ 100.
Each of the following N lines contains one word from the set. All letters will be uppercase letters of the English alphabet ('A'-'Z').

Output

The first and only line of output should contain the number of vertices in a minimal kokos.

Sample

input 
 
2 4
ABCDEFGH
EFGHIJKL
 
output
 
16

input
 
4 3
XXZZXX
XXYYZZ
AABBCZ
ABCZZZ
 
output
 
18

input
 
4 4
ABCDEFGH
ACBDEFGH
ABDCFEHG
EFEFFEGH
 
output
 
23



Added by:psetter
Date:2009-06-06
Time limit:1s
Source limit:50000B
Memory limit:1536MB
Cluster: Cube (Intel G860)
Languages:All except: ERL JS-RHINO NODEJS PERL6 VB.NET
Resource:COI 06