Wolfgang Nádasi-donner wrote: EOS > s = list.split("\n").sort{|a,b|a.length<=>b.length} > pre = > s.collect{|e|e.split('')[0...(s[0].length)]}.transpose.collect{|e|e.uniq}.reject{|e|e.length>1}.flatten.join('') > p pre # => "item" > > Wolfgang N#adasi-Donner :oops: - I made an error! The corrected version is... list = <<-EOS item0aa item1aa item3a EOS s = list.split("\n").sort{|a,b|a.length<=>b.length} pre = s.collect{|e|e.split('')[0...(s[0].length)]}.transpose.collect{|e|e.uniq}. inject(''){|r,c|(c.length>1)?(break r):(r<<c[0])} p pre # => "item" Wolfgang Nádasi-Donner -- Posted via http://www.ruby-forum.com/.