: (parsed) ( a -- n f ) DUP C@ ( a c ) DUP '-' = IF DROP 1+ ( a+1 ) (parsed) 0 ROT ( f 0 n ) - SWAP EXIT ( 0-n f ) THEN 0 SWAP _pdacc ( a r f ) DUP IF 2DROP 0 EXIT THEN BEGIN ( a r 0 ) DROP SWAP 1+ ( r a+1 ) DUP C@ ( r a c ) ROT SWAP ( a r c ) _pdacc ( a r f ) DUP UNTIL 1 = ( a r f ) ROT DROP ( r f ) ;