EduBrick

G. Цивилизация

3000 мс · 256 МБ · всё или ничего

Карта разбита на клетки: . — поле, W — лес, # — вода. Переселенец ходит по клеткам, имеющим общую сторону. Вход в поле стоит одну единицу времени, вход в лес — две, в воду войти нельзя.

Найдите наименьшее время пути из начальной клетки в конечную и сам маршрут.

Веса рёбер здесь уже не единичные, и обычный обход в ширину не годится: очередь перестаёт быть упорядоченной по расстоянию. Но весов всего два, и это спасает — например, можно разбить вход в лес на два шага по единице и вернуться к обычному обходу.

Маршрут выводится буквами: N — вверх, E — вправо, S — вниз, W — влево. Маршрутов минимальной стоимости может быть несколько; выведите лексикографически наименьший в обычном порядке букв: E меньше N, N меньше S, S меньше W.

Формат ввода

Первая строка содержит числа NN и MM (1≤N,M≤5001 \le N, M \le 500), затем координаты начальной клетки x1x_1, y1y_1 и конечной x2x_2, y2y_2 (строка и столбец, нумерация с единицы).

Далее идут NN строк по MM символов. Начальная и конечная клетки не вода.

Формат вывода

Если дойти нельзя, выведите −1-1.

Иначе в первой строке — наименьшее время, во второй — маршрут. Если начальная и конечная клетки совпадают, вторая строка пустая.

Примеры

ввод
4 8 1 1 4 8
....WWWW
.######.
.#..W...
...WWWW.
вывод
13
SSSEENEEEEES
ввод
2 2 1 1 2 2
.#
#.
вывод
-1
Войдите, чтобы отправлять решения.