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