import java.util.ArrayList;
import java.util.Scanner;

public class NickyEnMark {
	public static void main(String[] args) {
		Scanner scanner = new Scanner(System.in);
		int h = scanner.nextInt();
		int w = scanner.nextInt();
		char[][] tetris = new char[h][w];
		for (int i = 0; i < h; i++) {
			tetris[i] = scanner.next().toCharArray();
		}

		char[][][] tetrises = new char[4][][];
		tetrises[0] = tetris;
		tetrises[1] = rotate(tetris, h, w);
		tetrises[2] = rotate(tetrises[1], w, h);
		tetrises[3] = rotate(tetrises[2], h, w);

		for (int i = 0; i < 4; i++) {
			tetris = tetrises[i];

			boolean isOk = true;
			for (int j = 0; j < tetris[0].length; j++) {
				boolean hasPoint = false;
				for (int k = 0; k < tetris.length; k++) {
					if (tetris[k][j] == '.') {
						hasPoint = true;
					} else if (tetris[k][j] == '#' && hasPoint) {
						isOk = false;
						break;
					}
				}
			}

			if (isOk) {
				System.out.println(tetris.length + " " + tetris[0].length);
				for (char[] chars : tetris) {
					for (int j = 0; j < tetris[0].length; j++) {
						if (chars[j] == '.') {
							System.out.print("#");
						} else {
							System.out.print(".");
						}
					}
					System.out.println();
				}
				return;
			}
		}

		System.out.println("impossible");
	}

	public static char[][] rotate(char[][] tetris, int h, int w) {
		char[][] tetris2 = new char[w][h];
		for (int i = 0; i < h; i++) {
			for (int j = 0; j < w; j++) {
				tetris2[j][i] = tetris[i][w-j-1];
			}
		}

		return tetris2;
	}
}
