import sys def solve(): input = sys.stdin.read data = input().split() if not data: return H = int(data[0]) W = int(data[1]) S = data[2:] # カギの始点を管理する配列 # 各マスが横・縦のカギの始点かどうかを調べる is_horiz_start = [[False] * W for _ in range(H)] is_vert_start = [[False] * W for _ in range(H)] horiz_len = {} vert_len = {} for i in range(H): for j in range(W): if S[i][j] == ".": # 横のカギの始点判定 is_h = (j == 0 or S[i][j - 1] == "#") and ( j + 1 < W and S[i][j + 1] == "." ) if is_h: is_horiz_start[i][j] = True # 長さを計算 length = 0 jj = j while jj < W and S[i][jj] == ".": length += 1 jj += 1 horiz_len[(i, j)] = length # 縦のカギの始点判定 is_v = (i == 0 or S[i - 1][j] == "#") and ( i + 1 < H and S[i + 1][j] == "." ) if is_v: is_vert_start[i][j] = True # 長さを計算 length = 0 ii = i while ii < H and S[ii][j] == ".": length += 1 ii += 1 vert_len[(i, j)] = length # 添字の割り当て (上から、同じ行は左から) keys = [] for i in range(H): for j in range(W): if is_horiz_start[i][j] or is_vert_start[i][j]: keys.append((i, j)) K = len(keys) print(K) for idx, (i, j) in enumerate(keys): r_str = "-" c_str = "-" if is_horiz_start[i][j]: L = horiz_len[(i, j)] # 長さ L の適当な文字列を作る (例: 'a' が L 個) r_str = "a" * L if is_vert_start[i][j]: L = vert_len[(i, j)] c_str = "a" * L print(f"{r_str} {c_str}") if __name__ == "__main__": solve()