만드는 중입니다

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

얼룩

면접 대비

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

요약
얼룩 격자와 스티커 격자가 주어질 때, 스티커를 90도 단위로 회전하고 자유롭게 옮겨 가릴 수 없는 얼룩 칸의 최솟값을 구합니다.
난이도

쉬움10점 중 3점

유형
완전 탐색, 행렬, 구현
정답자
아직 제출이 없습니다

문제

Mirko가 공책에 코코아를 쏟아서 앞표지 한가운데에 얼룩이 생겼다. Mirko는 이 얼룩을 스티커로 가리려고 한다. 얼룩과 스티커 모두 모양이 불규칙해서, Mirko가 얼룩 전체를 가리지 못할 수도 있다.

얼룩은 표지의 가운데를 나타내는 가상의 N×NN \times N 표에서 #으로 표시된 칸들의 집합으로 주어진다. 스티커도 같은 방식으로, 크기가 같은 가상의 표에서 #으로 표시된 칸들의 집합으로 주어진다. 아래 보기를 참고하면 이해하기 쉽다.

Mirko는 다음을 할 수 있다.

  1. 스티커를 90°의 배수만큼 회전할 수 있다. 뒤집지는 않는다.
  2. 얼룩을 최대한 많이 가리도록 스티커를 임의의 방향으로 옮길 수 있다.

첫 번째 가능성은 Mirko가 스티커를 표지에 대해 네 가지 서로 다른 모양으로 놓을 수 있다는 뜻이다. 두 번째 가능성은 스티커가 얼룩을 나타내는 표 바깥으로 나갈 수 있다는 뜻이다.

스티커로 얼룩을 덮은 뒤, 스티커 아래에 보이는 얼룩 부분의 최소 개수를 구하는 프로그램을 작성하라. 얼룩을 완전히 가릴 수 있다면 답은 0이다.

그림은 세 번째 예의 상황이다. 왼쪽이 얼룩, 가운데가 스티커이다. 스티커를 시계 방향으로 90° 돌린 뒤, 얼룩의 오른쪽 위 한 부분만 남기고 나머지를 모두 가리도록 옮긴 모습을 오른쪽에 나타냈다.

입력

첫 줄에 표의 크기를 나타내는 정수 N (1 ≤\le N ≤\le 10)이 주어진다.

이어지는 N줄에는 얼룩을 나타내는 N글자의 문자열이 공백 없이 한 줄씩 주어진다. #은 얼룩 칸, .은 빈 칸을 뜻한다.

빈 줄 다음에 같은 형식으로 스티커를 나타내는 N줄이 주어진다.

얼룩의 칸들은 서로 연결되어 있어서 여러 조각으로 나뉘지 않는다. 스티커도 마찬가지다.

출력

첫 번째이자 유일한 줄에 문제에서 구하는 수를 출력한다.

힌트

첫 번째 테스트 케이스에서는 얼룩과 회전한 스티커가 정확히 같아서 완벽하게 겹칠 수 있다.

두 번째 테스트 케이스에서는 스티커를 어떻게 놓아도 얼룩의 적어도 한 부분은 가려지지 않은 채 남는다.

세 번째 테스트 케이스는 문제의 그림과 같다.

예제3

  1. 예제 1

    입력
    3
    .#.
    ##.
    ...
    
    ##.
    #..
    ...
    
    예상 출력
    0
    
  2. 예제 2

    입력
    4
    ...#
    ...#
    ...#
    ..##
    
    #.##
    ###.
    #.##
    ##.#
    
    예상 출력
    1
    
  3. 예제 3

    입력
    4
    #.##
    ###.
    ##..
    ....
    
    ##..
    .##.
    ####
    ..#.
    
    예상 출력
    1