#!/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]))

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

best = mins[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))
