import java.util.Scanner;


public class RagnarTranslatedByReinier {
	public static void main(String[] args) {
		Scanner scanner = new Scanner(System.in);
		int h = scanner.nextInt();
		int w = scanner.nextInt();
		char[][] lines = new char[h][];
		for (int i = 0; i < h; i++) {
			lines[i] = scanner.next().toCharArray();
		}
		
		int[][] b = new int[h][w];
		for (int y = 0; y < h; y++) {
			for (int x = 0; x < w; x++) {
				switch (lines[y][x]) {
				case 'w': b[y][x] = 0; break;
				case 'r': b[y][x] = 1; break;
				case 'g': b[y][x] = 2; break;
				case 'b': b[y][x] = 3; break;
				}
			}
		}
		
		int g = gcd(w, h);
		
		for (int x = 0; x < w; x++) {
			for (int y = 0; y < w; y++) {
				int r = (y-x)%w;
				for (int k = 0; k < g; k++) {
					boolean[][] agrid = new boolean[4][4];
					boolean[][] bgrid = new boolean[4][4];
					for (int i = k; i < h; i += g) {
						agrid[b[i][x]][b[i][y]] = true;
					}
					for (int i = ((k+r)%g+g)%g; i < h; i += g) {
						bgrid[b[i][x]][b[i][y]] = true;
					}
					for (int i = 0; i < 4; i++) {
						for (int j = 0; j < 4; j++) {
							agrid[i][j] = agrid[i][j] || agrid[j][i];
							bgrid[i][j] = bgrid[i][j] || bgrid[j][i];
						}
					}
					if (
						(agrid[0][1] && bgrid[2][3])
						|| (agrid[0][2] && bgrid[1][3])
						|| (agrid[0][3] && bgrid[1][2])
						|| (agrid[1][2] && bgrid[0][3])
						|| (agrid[1][3] && bgrid[0][2])
						|| (agrid[2][3] && bgrid[0][1])
					) {
						System.out.println("possible");
						return;
					}
				}
			}
		}
		System.out.println("impossible");
	}

	public static int gcd(int a, int b) {
		while (b != 0) {
			a %= b;
			int t = a;
			a = b;
			b = t;
		}
		return a;
	}
}
