#!/usr/bin/python3
import sys

n, w = [int(x) for x in sys.stdin.readline().split()]
words = [sys.stdin.readline().strip() for _ in range(0, n)]
mins = [[-1 for _ in range(w+1)] for _ in range(n+1)]
howmany = [[0 for _ in range(w+1)] for _ in range(n+1)]
maxwlen = [[-1 for _ in range(n+1)] for _ in range(n+1)]

for f in range(0, n):
    maxwlen[f][f+1] = len(words[f])
    for t in range(f+1, n):
        maxwlen[f][t+1] = max(maxwlen[f][t], len(words[t]))

def rec(pos, left):
    if pos >= n:
        return 0
    if left <= 0 or maxwlen[pos][n] > left:
        return n
    if mins[pos][left] >= 0:
        return mins[pos][left]
    best = n - pos
    howmany[pos][left] = best
    for i in range(pos+1, n):
        split = max(i-pos, rec(i, left - maxwlen[pos][i] - 1))
        if split < best:
            best = split
            howmany[pos][left] = i-pos
    mins[pos][left] = best
    return best

best = rec(0, w)
curword, pos, left = 0, 0, w
nums_per_col, widths_per_col = [], []
terminal = [[' ' for _ in range(0, w)] for _ in range(0, best)]
while pos < n:
    numwords = howmany[pos][left]
    for row in range(0, numwords):
        for x in range(0, len(words[curword])):
            terminal[row][w-left + x] = words[curword][x]
        curword += 1
    nums_per_col.append(numwords)
    colwidth = maxwlen[pos][pos+numwords]
    widths_per_col.append(colwidth)
    pos += numwords
    left -= (colwidth + 1)
        
print(f'{best} {len(nums_per_col)}')
print(' '.join(str(x) for x in widths_per_col))
print('\n'.join(''.join(line) for line in terminal))
