l:eval[read["../../lib.lil"]].vars i:"\n" split -1 drop read["../inp/12"] i:each x in i "%a" parse x end start:0 en:0 each x in range i each y in range i[0] if i[x][y]=83 start:x,y i[x][y]:97 end if i[x][y]=69 en:x,y i[x][y]:122 end end end q:(list start,0) prev:() dict () vis:each x in i each y in x 0 end end show[start] show[en] while q # each x in range 2 curr:2 take first q if curr~en show[first q] exit[] end score:last first q vis[curr[0]][curr[1]]:1 q:1 drop q each x in (list curr+0,1),(list curr+1,0),(list curr+0,-1),(list curr+-1,0) d:i[x[0]][x[1]]-i[curr[0]][curr[1]] if (!!i[x[0]][x[1]])&(d<2)&(d>-1)&!vis[x[0]][x[1]] q[count q]:x,score+1 # prev[x]:curr end end # show[sum l.absv[curr-en]] # show[vis] # q:l.uniq[q] end