     [ <reversed> ] bi@
     dupd fuzzy score max ;
 
+<PRIVATE
+
 : completion ( short candidate -- result )
     [ second swap complete ] keep 2array ;
 
 : completion, ( short candidate -- )
     completion dup first 0 > [ , ] [ drop ] if ;
+
+PRIVATE>
 
 : completions ( short candidates -- seq )
     [ ] [

        ] keep pick last push
    ] each ;

: runs ( seq -- newseq )
    [ V{ } clone 1vector ] dip [ first ] keep (runs) drop ;

: score-1 ( i full -- n )
    {

        { [ 2dup [ 1 + ] dip nth Letter? not ] [ 2drop 4 ] }
        [ 2drop 1 ]
    } cond ;

PRIVATE>

: score ( full fuzzy -- n )
    dup [
