def f(d, name1, name2)
    return f(d, name2, name1) if name1.size < name2.size
    return name1 == name2 if d == 0
    return false if name1.size > name2.size + d

    if name1.size == name2.size + d
        return name2 =~ (/^#{name1.split("").join(??)}?$/)
    end

    return true if name2 == ""

    if name1[0] == name2[0]
        return f(d, name1[1..-1], name2[1..-1])
    else
        b = f(d-1, name1[1..-1], name2)
        return true if b
        b = f(d-1, name1[1..-1], name2[1..-1])
        return true if b
        if name1.size >= 2
            b = f(d-1, name1[0..1].reverse + name1[2..-1], name2)
            return true if b
        end
        if name1.size >= 2
            b = f(d-1, name1, name2[0..1].reverse + name2[2..-1])
            return true if b
        end
    end
    
    return false
end

loop do
    n = gets.to_i
    break if n == 0
    d = gets.to_i
    
    names = (1..n).map { gets.chomp }

    ans = []
    names.combination(2) do |name1, name2|
        ans << [name1, name2].sort if f(d, name1, name2)
    end
    puts ans.sort.map {|n1, n2| "#{n1},#{n2}"}
    puts ans.size
end