시간 제한메모리 제한제출정답맞힌 사람정답 비율
2 초 1024 MB2612964.286%

문제

Da bi spoznao kako se pravi marinada1 za mladu janjetinu, Krešo mora proći kroz magični labirint. Labirint se sastoji od zidova, praznog prostora i namirnica od kojih se pravi marinada.

Točnije, labirint možemo prikazati kao matricu s $N \times M$ polja. Neka su polja zid (znak ‘#’), neka su prazan prostor (znak ‘.’), neka su namirnice (znak ‘N’), jedno polje je ulaz (znak ‘U’), a jedno izlaz (znak ‘I’). Polja na kojima su namirnice ima $K$. Krešo se po labirintu kreće od ulaza do izlaza, a jedina polja kojima se ne smije kretati su zidovi. Sva polja osim zidova smije posjetiti koliko god puta želi. U jednom koraku, Krešo s polja na kojem se nalazi može otići na neko polje njemu susjedno gore, dolje, lijevo ili desno.

Napiši program koji će za tako opisan labirint ispisati najmanji broj koraka potreban da Krešo dođe od ulaza do izlaza, a da pritom pokupi sve namirnice za slavnu marinadu.

I onda zapeče komad mlade janjetine za autore ovog zadatka.

입력

U prvom retku su prirodni brojevi $N$, $M$ ($1 ≤ N, M ≤ 1000$) i $K$ ($1 ≤ K ≤ 16$).

U sljedećih $N$ redaka je po $M$ znakova iz skupa {# . N U I}. Znak ‘N’ pojavit će se ukupno K puta.

출력

U prvi i jedini redak ispiši traženi najmanji broj koraka iz teksta zadatka.

서브태스크

번호배점제한
130

$1 ≤ N, M ≤ 50$, $1 ≤ K ≤ 6$

230

$1 ≤ N, M ≤ 1000$, $1 ≤ K ≤ 8$

340

$1 ≤ N, M ≤ 1000$, $1 ≤ K ≤ 16$

예제 입력 1

6 10 3
##########
#.UI....N#
#.....N..#
#........#
#N.......#
##########

예제 출력 1

19

예제 입력 2

6 10 3
..##...###
#.U#....N#
##.#.N#..#
#..####..#
#N.I.....#
..###..###

예제 출력 2

28

채점 및 기타 정보

  • 예제는 채점하지 않는다.