Advertising ICPC
시간 제한1초메모리 제한1024 MB
C, I, P, ?로 채워진 n×m 격자를 C, I, P로 채울 때, IC/PC 모양의 2×2 블록이 적어도 하나 존재하는 경우의 수를 998244353으로 나눈 나머지를 구한다.
문제
You're making a flag to try to advertise ICPC! The flag takes the form of a grid that is already filled with some "C", "I", and "P" letters. A flag is advertising ICPC if there exists at least one subgrid that looks exactly like the following:
IC
PC
The flag cannot be rotated or reflected. Every square in the grid must be filled with either a "C", "I", or "P". Count the number of ways to fill the unfilled locations on the flag such that the flag is advertising ICPC.
입력
The first line contains two integers, and , where is the number of rows and is the number of columns in the grid.
The next lines each contains a string of length . Each character in the string is either a "C", "I", "P", or "?". A "?" means that that location is not yet filled with a letter.
These lines form the grid that represents the flag.
출력
Output a single integer, which is the number of ways to fill the flag such that it is advertising ICPC, modulo .