K (ngn/k), 41 32 bytes
{,/(|4,&0|,/-:\)'-':+(0,y)\x-97} output: 0=D 1=R 2=U 3=L 4=!
{ } function with arguments x and y
x-97 convert "a".."z" to 0..25
(0,y)\ divmod by y, returns a pair of lists - one with the quotients and one with the remainders
+ flip - make it a list of pairs
-': deltas - subtract each pair from the previous one; use 0 0 as an implicit pair before the first
( )' for each pair (let's call it (Δi;Δj)) do:
-:\self and own negation:(Δi;Δj)->((Δi;Δj);(-Δi;-Δj)),/concatenate: ->(Δi;Δj;-Δi;-Δj)0|max with 0&"where" - for instance it would turn the lista:1 5 0 2into0 1 1 1 1 1 3 3, i.e. each indexiis repeateda[i]times4,prepend a 4|reverse
,/ concatenate