100 REM RECURSIVE SOLUTION 110 MS=100:REM MAX STACK DEPTH 120 DIM BL$(MS):REM BLOCKS LEFT 130 DIM W$(MS):REM REMAINING LETTERS 140 DIM I(MS):REM LOOP CONTROL VARIABLE 150 DIM RV(MS):REM RETURN VALUE 160 SP=-1:REM STACK POINTER 170 READ BL$ 180 PRINT "USING BLOCKS: " 190 FOR I=1 TO LEN(BL$) STEP 2 200 : PRINT"("MID$(BL$,I,2)")"; 210 NEXT I 220 PRINT CHR$(13) 230 READ W$ 240 IF W$="" THEN 320 250 PRINT W$;"->"; 260 SP=SP+1:BL$(SP)=BL$:W$(SP)=W$ 270 GOSUB 350 280 IF RV(SP) THEN PRINT "YES": GOTO 300 290 PRINT "NO" 300 SP=SP-1 310 GOTO 230 320 READ BL$ 330 IF BL$ THEN PRINT:GOTO 180 340 END 350 IF LEN(W$(SP))=0 THEN RV(SP)=-1:RETURN 360 I(SP)=1 370 IF I(SP)>=LEN(BL$(SP)) THEN RV(SP)=0:RETURN 380 IF MID$(BL$(SP),I(SP),1) = LEFT$(W$(SP),1) THEN 410 390 IF MID$(BL$(SP),I(SP)+1,1) = LEFT$(W$(SP),1) THEN 410 400 GOTO 450 410 W$(SP+1)=MID$(W$(SP),2) 420 BL$(SP+1)=LEFT$(BL$(SP),I(SP)-1)+MID$(BL$(SP),I(SP)+2) 430 SP=SP+1:GOSUB 350:SP=SP-1 440 IF RV(SP+1) THEN RV(SP)=-1:RETURN 450 I(SP)=I(SP)+2:GOTO 370 460 DATA BOXKDQCPNAGTRETGQDFSJWHUVIANOBERFSLYPCZM 470 DATA A, BORK, BOOK, TREAT, COMMON, SQUAD, CONFUSE, "" 480 DATA ABABACAC,ABBA,"" 490 DATA ""