sub f{ my@a; /(.)(.*)(?!\1)(.)(.*)\3(?{push@a,[$1.$3x2,"$`$2$4$'"]})^/ for@_; my$s=0; $s+=$-=$$_[0]-$s+f($$_[1])for@a; $s; } print f<>