def read_number():
    N = int(input())

    letters = []

    for i in range(N):
        letters.append(input().find("#"))


    number = 1
    for i, e in enumerate(letters):
        if i == 0: continue
        if e < letters[i-1]:
            number *= 2
            number += 1
        else:
            number *= 2

    return number

def print_number(number):
    START_SIZE = 70
    grid = [['.' for i in range(START_SIZE)] for j in range(START_SIZE)]
    curr = START_SIZE-1
    col = START_SIZE//2
    grid[curr][col] = '#'
    max_col = col
    min_col = col
    min_row = curr
    while number > 1:
        curr -= 1
        if (number % 2):
            col += 1
        else:
            col -= 1
        grid[curr][col] = "#"
        number = number // 2
        max_col = max(max_col, col)
        min_col = min(min_col, col)
        min_row = min(min_row, curr)

    print(START_SIZE-min_row)
    for row in grid[min_row:]:
        print("".join(row[min_col:max_col+1]))

a = read_number()
b = read_number()

print_number(a+b)

