#include <bits/stdc++.h>
using namespace std;
struct par {
  int x, y, id;
  void ch() { swap(x, y); }
} a[10];
bool operator<(const par &a, const par &b) {
  if (a.x != b.x) return a.x < b.x;
  if (a.y != b.y) return a.y < b.y;
  return a.id < b.id;
}
char val(int id) { return 'A' + id; }
int main() {
  ios::sync_with_stdio(false);
  cin.tie(0);
  for (int i = 0; i < 3; i++) {
    cin >> a[i].x >> a[i].y;
    a[i].id = i;
  }
  for (int i = 0; i < 2; i++) {
    for (int j = 0; j < 2; j++) {
      for (int k = 0; k < 2; k++) {
        vector<par> v;
        par p;
        p = a[0];
        if (i) p.ch();
        v.push_back(p);
        p = a[1];
        if (j) p.ch();
        v.push_back(p);
        p = a[2];
        if (k) p.ch();
        v.push_back(p);
        sort(v.begin(), v.end());
        do {
          if ((v[0].x == v[1].x) && (v[0].x == v[2].x) &&
              (v[0].y + v[1].y + v[2].y == v[0].x)) {
            cout << v[0].x << "\n";
            for (int x = 0; x < v[0].x; x++) {
              for (int y = 0; y < 3; y++) {
                for (int z = 0; z < v[y].y; z++) {
                  cout << val(v[y].id);
                }
              }
              cout << "\n";
            }
            return 0;
          }
          if (v[0].x == v[1].x + v[2].x &&
              (v[1].y == v[2].y && v[0].y + v[1].y == v[0].x)) {
            cout << v[0].x << "\n";
            for (int x = 0; x < v[0].x; x++) {
              for (int y = 0; y < v[0].y; y++) {
                cout << val(v[0].id);
              }
              if (x < v[1].x) {
                for (int y = 0; y < v[1].y; y++) {
                  cout << val(v[1].id);
                }
              } else {
                for (int y = 0; y < v[2].y; y++) {
                  cout << val(v[2].id);
                }
              }
              cout << "\n";
            }
            return 0;
          }
        } while (next_permutation(v.begin(), v.end()));
      }
    }
  }
  cout << "-1\n";
}
