만드는 중입니다

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

Pohlepko

면접 대비

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

요약
왼쪽 위에서 오른쪽 아래까지 오른쪽이나 아래로만 이동하는 경로에서 읽히는 문자열 가운데 사전순으로 가장 작은 것을 구한다.
난이도

보통10점 중 6점

유형
동적 계획법, 그리디, 배열, BFS
정답자
아직 제출이 없습니다

문제

Pohlepko는 생일 선물로 판을 하나 받았다. 판은 NN행 MM열이고, 각 칸에 영어 소문자가 하나씩 적혀 있다. 생일 파티가 지루해진 사람들은 이 판으로 간단한 게임을 하기로 했다.

게임은 왼쪽 위 칸 (1,1)(1, 1)에 말을 놓고 시작한다. 매 차례마다 말을 오른쪽이나 아래로 한 칸 옮겨야 하고, 말은 판을 벗어날 수 없다. 말이 오른쪽 아래 칸 (N,M)(N, M)에 도착하면 게임이 끝난다. 말이 지나간 칸의 글자를 지나간 순서대로 이어 붙이면 단어 하나가 만들어진다. 게임의 목표는 이렇게 만들 수 있는 단어 중 사전순으로 가장 앞서는 단어를 찾는 것이다.

사전순으로 가장 앞서는 단어를 만든 사람이 사탕 한 봉지를 상으로 받는다. Pohlepko는 사탕을 꼭 받고 싶어서, 사전순으로 가장 앞서는 단어를 찾는 프로그램을 짜 달라고 부탁했다.

사전순은 단어가 사전에 실리는 순서다. 두 단어의 첫 글자가 다르면 알파벳에서 먼저 나오는 글자로 시작하는 단어가 더 앞선다.

입력

첫째 줄에 두 정수 NN과 MM이 공백으로 구분되어 주어진다. (1≤N,M≤20001 \le N, M \le 2000)

다음 NN개의 줄에는 판의 각 행이 주어진다. 각 줄은 영어 소문자 MM개로 이루어져 있다.

출력

사전순으로 가장 앞서는 단어를 한 줄에 출력한다.

힌트

다음 그림은 가장 앞서는 단어를 만드는 경로의 예를 보여 준다.

예제3

  1. 예제 1

    입력
    4 5
    ponoc
    ohoho
    hlepo
    mirko
    
    예상 출력
    pohlepko
    
  2. 예제 2

    입력
    4 5
    bbbbb
    bbbbb
    bbabb
    bbbbb
    
    예상 출력
    bbbbabbb
    
  3. 예제 3

    입력
    2 5
    qwert
    yuiop
    
    예상 출력
    qweiop