$:<<z=/\d/?[C*C.hex]:[(a,b=$:.pop 2 a+[?.*i=a[0].size]*49).zip(b).map{|s,t|D=s+t||=?.*J=b[0].size}-[D],[C*i]*J,(a+b).map{|s|(s+D)[0,J<i ?i:J]}][C.ord/62]while C=gets(1) puts z
Note that non-ascii characters in the above source code will be escaped (such as \x9f).