( autocomplete DAY )

VARIABLE LW-LEN

: LastWord ( addr u -- addr1 u1 )
  TUCK + 1- ( u addr1 )
    0 >R
  BEGIN
    OVER R@ >
  while
    dup C@ BL > 
  WHILE
    1- RP@ 1+!
  REPEAT then
  NIP 1+ R> DUP LW-LEN !
;

: UCOMPARE
( addr u addr1 u1 -- 0 | -1 )
  ROT MIN
  0 DO
      2DUP C@ LWC SWAP C@ LWC <>
      IF UNLOOP 2DROP -1 EXIT THEN
      1+ SWAP 1+
    LOOP 2DROP 0
;

: ClosestW ( addr u -- addr1 u1 -1 | 0 )
  2>R
  LAST @
  BEGIN
    DUP N> CELL+ COUNT 31 AND
    DUP R@ < 0=
    IF
      2R@ UCOMPARE 0=
      IF 2RDROP N> CELL+ COUNT 31 AND TRUE EXIT
      THEN
    ELSE 2DROP
    THEN
    CDR DUP 0=
  UNTIL DROP 2RDROP 0
;

: AComplete
  ( addr1 u1 -- addr2 u2 true | false )
\ addr1 u1 - input string
\ addr2 u2 - founded word
  LastWord
  ClosestW
;