#include <bits/stdc++.h>
using namespace std;
const long long mod = 1e9 + 7;
int n, m,
    dx[4][5] = {{-1, -1, -1, 0, 1},
                {0, 0, 0, -1, 1},
                {-1, 0, 1, 1, 1},
                {-1, 0, 1, 0, 0}};
int dy[4][5] = {
    {-1, 0, 1, 0, 0}, {-1, 0, 1, 1, 1}, {0, 0, -1, 0, 1}, {-1, -1, -1, 0, 1}};
int a[10][10];
int ans[10][10], ff;
int f(int x, int y, int cnt) {
  if (y == m) {
    if (cnt == ans[n][m]) {
      cout << cnt << endl;
      if (ff == 0) {
        for (int i = 0; i < n; i++) {
          for (int j = 0; j < m; j++) {
            if (a[i][j] == 0)
              cout << '.';
            else
              cout << (char)(a[i][j] + 'A' - 1);
          }
          cout << endl;
        }
      } else {
        for (int i = 0; i < m; i++) {
          for (int j = 0; j < n; j++) {
            if (a[j][i] == 0)
              cout << '.';
            else
              cout << (char)(a[j][i] + 'A' - 1);
          }
          cout << endl;
        }
      }
      exit(0);
    }
    return 0;
  }
  int ans = 0;
  for (int i = 0; i < 4; i++) {
    int cn = 1;
    for (int j = 0; j < 5; j++) {
      int xx = x + dx[i][j];
      int yy = y + dy[i][j];
      if (0 <= xx && xx < n && 0 <= yy && yy < m) {
        if (a[xx][yy]) cn = 0;
      } else
        cn = 0;
    }
    if (cn) {
      for (int j = 0; j < 5; j++) {
        int xx = x + dx[i][j];
        int yy = y + dy[i][j];
        a[xx][yy] = cnt + 1;
      }
      if (x + 1 < n)
        ans = max(ans, f(x + 1, y, cnt + 1) + 1);
      else
        ans = max(ans, f(0, y + 1, cnt + 1) + 1);
      for (int j = 0; j < 5; j++) {
        int xx = x + dx[i][j];
        int yy = y + dy[i][j];
        a[xx][yy] = 0;
      }
    }
  }
  if (x + 1 < n)
    ans = max(ans, f(x + 1, y, cnt));
  else
    ans = max(ans, f(0, y + 1, cnt));
  return ans;
}
int main() {
  ios_base::sync_with_stdio(false);
  cin.tie(NULL);
  cout.tie(NULL);
  ans[3][3] = 1;
  ans[3][4] = 1;
  ans[3][5] = 2;
  ans[3][6] = 2;
  ans[3][7] = 3;
  ans[3][8] = 3;
  ans[3][9] = 4;
  ans[4][4] = 2;
  ans[4][5] = 2;
  ans[4][6] = 3;
  ans[4][7] = 4;
  ans[4][8] = 4;
  ans[4][9] = 5;
  ans[5][5] = 4;
  ans[5][6] = 4;
  ans[5][7] = 5;
  ans[5][8] = 6;
  ans[5][9] = 7;
  ans[6][6] = 5;
  ans[6][7] = 6;
  ans[6][8] = 7;
  ans[6][9] = 8;
  ans[7][7] = 8;
  ans[7][8] = 9;
  ans[7][9] = 10;
  ans[8][8] = 10;
  ans[8][9] = 12;
  ans[9][9] = 13;
  cin >> n >> m;
  if (n > m) {
    swap(n, m);
    ff = 1;
  }
  cout << f(0, 0, 0);
}
