#include <bits/stdc++.h>
using namespace std;
const long long mod = (long long)1e9 + 7;
int n;
int cntB[500500], cntN[500500];
int f(int x, int y) {
  int mx = 0;
  for (int i = 1; i <= n; ++i) {
    int res = abs(x - cntN[i]);
    if ((x >= cntN[i] && y >= cntB[i]) || (x <= cntN[i] && y <= cntB[i]))
      res = max(res, abs(y - cntB[i]));
    else
      res += abs(y - cntB[i]);
    mx = max(mx, res);
  }
  return mx;
}
pair<int, int> ternary_search(int x) {
  int lo = 0, hi = (int)5e5, res_B = -1;
  if (x == 0) ++lo;
  while (hi - lo > 2) {
    int m1 = lo + (hi - lo) / 3;
    int m2 = hi - (hi - lo) / 3;
    if (f(x, m1) < f(x, m2))
      hi = m2;
    else
      lo = m1;
  }
  long long ans = (int)5e5;
  for (int i = lo; i <= hi; ++i) {
    auto result = f(x, i);
    if (result < ans) {
      ans = result;
      res_B = i;
    }
  }
  return {ans, res_B};
}
void solve() {
  cin >> n;
  for (int i = 1; i <= n; ++i) {
    string s;
    cin >> s;
    for (char c : s)
      if (c == 'B')
        ++cntB[i];
      else
        ++cntN[i];
  }
  int lo = 0, hi = (int)5e5, res_N = -1;
  while (hi - lo > 2) {
    int m1 = lo + (hi - lo) / 3;
    int m2 = hi - (hi - lo) / 3;
    if (ternary_search(m1).first < ternary_search(m2).first)
      hi = m2;
    else
      lo = m1;
  }
  long long ans = (int)5e5;
  for (int i = lo; i <= hi; ++i) {
    auto result = ternary_search(i);
    if (result.first < ans) {
      ans = result.first;
      res_N = i;
    }
  }
  cout << ans << "\n";
  int real_b = ternary_search(res_N).second, real_n = res_N;
  for (int i = 0; i < real_b; ++i) cout << 'B';
  for (int i = 0; i < real_n; ++i) cout << 'N';
  cout << '\n';
}
int main() {
  ios_base ::sync_with_stdio(0);
  cin.tie(0);
  cout.tie(0);
  int t = 1;
  for (int i = 1; i <= t; ++i) {
    solve();
  }
  return 0;
}
