I think that there are more key presses then you think. There are
(10**4)*3 different combinations which totals 30,000. But that takes
30,000*5 key presses which is 150,000 key presses. So if the code was 5
digits, it is 1,500,000 key presses to test them all by brute force.
Anyway, here is my first solution. It is unrefined, but I haven't
really had time to work on it much.

<code>

# Shane Emmons
#
# Quiz 72 B&E
#
# This code is very ugly and inefficient, but I wanted to get
# something out there to look at. Sorry I didn't have more
# time to work on this quiz.

all_possible = ""

10.times do |key1| 10.times do |key2| 10.times do |key3|
10.times do |key4|  3.times do |key5|
    current_code = Array.new
    current_code << key1 << key2 << key3 << key4 << key5 + 1
    next if all_possible.include?( current_code.to_s )
    left, left_over = Array.new( current_code ), Array.new
    right, right_over = Array.new( current_code ), Array.new
    while true do
        left_over << left.shift
        right_over << right.pop
        if left.length == 0
            all_possible += current_code.to_s
            break
        elsif all_possible =~ /^#{left.to_s}/
            all_possible = left_over.to_s + all_possible
            break
        elsif all_possible =~ /#{right.to_s}$/
            all_possible += right_over.to_s
            break
        end
    end
end end
end end end

print "string: ", all_possible, "\n"
print "string length: ", all_possible.length, "\n"

</code>

Shane