Postorder

Score: 49.09 (pass)

Ha!

#!perl
s~~
@ARGV~;print$1until!s~(.)(?=(.).*\2.*\1| )~~s

Score: 49.09 (pass)

Improved tiebreaker (0.0024)

#!perl
s~~
@ARGV~;print$1until!s~(.)((.).+\3.*\1| )~\2~s

Score: 50.10 (pass)

#!perl
s~~@ARGV
~;print$&until!s~(.)(?=(.).*\2.*\1| )|
~~

Score: 51.16 (pass)

I'm getting closer...

#!perl
$_="@ARGV
";print$&while s/(.)(?=(.).*\2.*\1| )|
//

Score: 56.13 (pass)

#!perl
$_="@ARGV";print$1while s/(.)(?=(.).*\2.*\1| )//;print$/

Score: 58.17 (pass)

Small improvement in the algorithm.

#!perl
$_="@ARGV";$a.=$1while s/(.)(?=(.).*\2.*\1| )//;print$a,$/

Score: 128.11 (fail)

#!perl -l
sub a{($_,my$I)=@_;s/.//;my$P=$_ or return$I;my($z,$x,$y)=($&,split$&,$I);a(/[ $x]+/g,$x),a($P=~/[ $y]+/g,$y),$z}print a@ARGV

Score: 128.11 (pass)

Resubmission of accidently rejected solution. But with a better tiebreaker!

#!perl -l
sub a{($_,my$I)=@_;s/.//;my$p=$_ or return$I;my($z,$x,$y)=($&,split$&,$I);a(/[z$x]+/g,$x),a($p=~/[z$y]+/g,$y),$z}print a@ARGV

Score: 130.11 (pass)

#!perl -l
sub a{($_,my$P)=@_;$P=~s/.//;$P||return$_;/$&/;my($y,$z,$o)=($-[0],$',$&);a($`,substr$P,0,$y),a($z,substr$P,$y),$o}print a@ARGV