만드는 중입니다

아직 만드는 중이라 바뀔 수 있습니다

펭귄의 하루

면접 대비

시간 제한1초메모리 제한1024 MB

요약
D 칸을 피하면서 S에서 F 칸 하나를 거쳐 H까지 가는 최단 거리를 구하고, 불가능하면 -1을 출력합니다.
난이도

쉬움10점 중 3점

유형
행렬, BFS
정답자
아직 제출이 없습니다

문제

펭귄 마을은 11 × 11 크기의 정사각형 칸으로 나누어진 NN × MM 행렬이다. 각 칸은 'S', 'H', 'E', 'D', 'F' 중 하나의 문자로 표시된다. 'E'는 천적이 없는 안전 구역이라 펭귄이 이동해도 된다. 'D'는 펭귄의 천적인 바다표범이 사는 위험 구역이라 펭귄이 들어갈 수 없다. 'F'는 펭귄이 먹이를 구할 수 있는 물고기 서식지다. 'S'는 펭귄의 현재 위치이고, 'H'는 펭귄의 집이다.

펭귄은 위험 구역이 아닌 칸을 상하좌우로 이동한다. 펭귄은 멸종위기 동물이라 펭귄 마을 밖으로는 나갈 수 없다.

펭귄은 현재 위치에서 출발해 물고기 서식지 중 적어도 한 곳을 들렀다가 사냥을 마치고 집으로 돌아가려 한다. 사냥하는 데 걸리는 시간은 계산하지 않는다. 출발 지점에서 아직 물고기 서식지를 들르지 않았더라도 펭귄의 집을 지나갈 수 있다. 물고기 서식지를 들른 뒤에는 출발 지점을 거쳐 집으로 돌아갈 수 있다. 인접한 칸으로 한 칸 이동하는 데 11초가 걸린다. 물고기를 사냥해 가장 빨리 집에 도착하는 데 걸리는 시간을 구하라.

입력

첫째 줄에 세로 길이 NN(1≤N≤1 0001 \leq N \leq 1\,000)과 가로 길이 MM(1≤M≤1 0001 \leq M \leq 1\,000)이 주어진다. 둘째 줄부터 NN개의 줄에 마을의 위치 정보를 나타내는 길이 MM의 문자열이 주어진다. 문자는 'S', 'H', 'E', 'D', 'F'로 이루어진다. 'S'와 'H'는 각각 한 칸에만 있다. 물고기 서식지 'F'는 11개 이상 1 0001\,000개 이하로 있다.

출력

펭귄이 물고기 서식지를 들러 집에 도착할 때 걸리는 최소 시간을 출력한다. 물고기 서식지를 들러 집에 도착할 수 없다면 −1-1을 출력한다.

예제2

  1. 예제 1

    입력
    5 3
    SEE
    EFE
    HEE
    EEE
    EEE
    
    예상 출력
    4
    
  2. 예제 2

    입력
    3 3
    SDF
    DDE
    EEH
    
    예상 출력
    -1