Անկասելի Ռոբոտը

Ուսանողների մի խումբ մշակում էր ռոբոտ, որը կարող է շարժվել լաբիրինթում: Սակայն ռոբոտն այնքան էլ կատարյալ չէ, քանի որ չի կարող փոխել իր ուղղությունը կամ կանգ առնել, մինչև չհասնի պատի կամ խոչընդոտի: Երբ ռոբոտը սկսում է շարժվել, այն գնում է մինչև տվյալ ուղղությամբ հանդիպի ամենամոտ պատն կամ խոչընդոտը, ապա կարող է ընտրել նոր ուղղություն:

Ձեզ խնդրում են պարզել, թե ինչ է ամենափոքր քանակի քայլերը, որ ռոբոտը պետք է կատարի, որպեսզի S մեկնարկային դիրքից հասնի E վերջնակետին, և տպել այն հրամանները, որոնք անհրաժեշտ է ուղարկել ռոբոտին այդ նպատակի համար.

  • L – ձախ շարժվել

  • U – վերև շարժվել

  • R – աջ շարժվել

  • D – ներքև շարժվել

Մուտք

Մուտքի առաջին տողում տրված են երկու թվեր h և w (2 ≤ h, w ≤ 100), որոնք նշում են ցանցի (լաբիրինթի) բարձրությունը և լայնությունը:

Հաջորդ h տողերը պարունակում են w նիշ, որոնք ներկայացնում են ցանցը.

  • . հատակն է

  • # պատն է

  • S մեկնարկային դիրքն է

  • E ավարտական դիրքն է

Վստահեցվում է, որ ցանցը շրջապատված է պատերով, որպեսզի ռոբոտը չկարողանա դուրս գալ լաբիրինթից:

Ելք

Ծրագիրը պետք է նախ տպի ռոբոտի կողմից սկսած դիրքից ավարտական դիրք հասնելու նվազագույն քայլերի քանակը: Երկրորդ տողում պետք է ընդգրկվեն այն բոլոր հրամանները, որոնք անհրաժեշտ է ուղարկել ռոբոտին: Եթե գոյություն ունեն մի քանի հավասարակշիռ լուծումներ, ծրագիրը կարող է տպել դրանցից որևէ մեկը:

Եթե անհնար է, որ ռոբոտը հասնի վերջնակետին, ծրագիրը պետք է տպի Impossible:

Examples

Input

7 9
#########
#.......#
#.S.....#
#.......#
#.#E....#
#.#.....#
#########
Output

4
RDLU

Հուշում

Սկզբնակետը կարելի է դիտարկել ως հատակ (.), իսկ վերջնակետը՝ որպես պատ (#):

Constraints

Time limit: 2 seconds

Memory limit: 512 MB

Output limit: 1 MB

To check your solution you need to sign in
Sign in to continue