#include <bits/stdc++.h>
using namespace std;
template <class T>
inline void setmax(T &a, T b) {
  if (b > a) a = b;
}
template <class T>
inline void setmin(T &a, T b) {
  if (b < a) a = b;
}
int num1, num2, num3;
int d12, d13, d23;
void ret() {
  cout << -1;
  exit(0);
}
void put(int num, char val) {
  for (int i = 0; i < (num); i++) printf("%c", val);
}
int main(void) {
  cin >> num1 >> num2 >> num3;
  cin >> d12 >> d13 >> d23;
  if (num1 + num2 < d12 || (num1 + num2 - d12) % 2 == 1) ret();
  int x = (num1 + num2 - d12) / 2;
  int y = num1 - x, z = num2 - x;
  if (y < 0 || z < 0) ret();
  if ((num1 + num3 - d13) < 0 || (num2 + num3 - d23) < 0) ret();
  if ((num1 + num3 - d13) % 2 == 1 || (num2 + num3 - d23) % 2 == 1) ret();
  int int1 = (num1 + num3 - d13) / 2, int2 = (num2 + num3 - d23) / 2;
  int ta = min(min(int1, int2), x), a, b, c, d;
  bool good = false;
  for (a = 0; a <= ta; a++) {
    b = int1 - a;
    c = int2 - a;
    d = num3 - a - b - c;
    if (d < 0 || y < b || z < c) continue;
    good = true;
    break;
  }
  if (!good) ret();
  int val = x + y + z + d;
  cout << val << endl;
  put(val, 'a');
  printf("\n");
  put(num1, 'b');
  put(val - num1, 'a');
  printf("\n");
  put(x, 'b');
  put(y, 'a');
  put(z, 'b');
  put(d, 'a');
  printf("\n");
  put(a, 'b');
  put(x - a, 'a');
  put(b, 'b');
  put(y - b, 'a');
  put(c, 'b');
  put(z - c, 'a');
  put(d, 'b');
  return 0;
}
