n, m = map (int, raw_input ().split ())
a = [['-' for c in range (m)] for r in range (n)]
r, c, d, k, g = 0, 0, 1, 0, 'B'

def move (r, c, d):
    global a, k, g
    ok = True
    for i in range (k + 1):
        if r >= n:
            r += 1
            break
        a[r][c] = g
        c += d
        if c < 0 or c >= m:
            c -= d
            d *= -1
            r += 1
    return r, c, d

while True:
    cr, cc, cd = move (r, c, d)
    if cr <= n:
        g = ord (g)
        if cr > 9:
            g += 1
        else:
            g = max (g, ord ('B') + cr * 2) ^ 1
        g = chr (g)
        if g > 'Z':
            g = 'A'
    r, c, d = move (r, c, d)
    if r <= n:
        k += 1
    else:
        break

print k
for r in range (n):
    print ''.join (a[r])
