Prints both solutions in 360 characters.
@s=(0,(grep{$_%3}1..14),15);%m=map{$t=$_,[grep{$z=($t^$_)&7;($t^$_)&8&
+&
!($t&8&&~$t&$_&7)&&!(~$t&8&&$t&~$_&7)&&($z<3||$z==4)}@s]}@s;sub t{@c=q
+w
(w g c b);join'',map{$_[0]&2**$_?$c[$_]:'_'}0..3}sub p{printf"%s %s\n"
+,
t(~$_),t($_)for@_;print$/}sub r{my($s,$e,$h,%s)=@_;($s==$e&&p@$h)||r($
+_
,$e,[@$h,$_],$_=>1,%s)for grep{!$s{$_}}@{$m{$s}}}r+0,$s[-1],[0],0,1
Update: something's gone wrong in the obfu process. Pls ignore for now.
Update 2: fixed. Even without strict one needs my at times. Now improved to 358 351 characters.