one char & tie breaking
#!perl -lp
$_="($_)";y+(-9 +b-s+d;1while s*b([^b]+?)c*$_=$1;for$/qw(di eg){s-(?<=\S)([$/])(g?[^eg$/]+)- $2 $1-g}y+b-s+(-9+;$_*e
|
Abuse of $/ saves one char. 2nd try
#!perl -lp
$_="($_)";y+)(-9 +a-s+d;1while s|b([^ab]+)a|$_=$1;for$/qw(di eg){s:(?<=\S)([$/])(g?[^eg$/]+): $2 $1:g}y+d-s+*-9+;$_|e
|
1st try
#!perl -lp
$_="($_)";y:)(-9 :a-s:d;s.([b-g])g.$1-.g;1while s!b([^ab]+)a!$_=$1;for$k('di','eg'){s:([$k])([^eg$k]+): $2 $1:g}y:d-s:*-9:;$_!e
|