#include <bits/stdc++.h>
using namespace std;
vector<pair<int, int> > edge[110];
int dp[110][110][410];
int get(int i, int j, int val) {
  if (dp[i][j][val] != -1) return dp[i][j][val];
  for (auto k : edge[i]) {
    if (k.second >= val && !get(j, k.first, k.second)) {
      return dp[i][j][val] = 1;
    }
  }
  return dp[i][j][val] = 0;
}
int main() {
  int n, m;
  cin >> n >> m;
  memset(dp, -1, sizeof(dp));
  for (int i = (1); i < (m + 1); i++) {
    int u, v;
    char b;
    cin >> u >> v >> b;
    edge[u].push_back(make_pair(v, (int)(b)));
  }
  for (int i = (1); i < (n + 1); i++) {
    for (int j = (1); j < (n + 1); j++) {
      get(i, j, 0);
    }
  }
  for (int i = (1); i < (n + 1); i++) {
    for (int j = (1); j < (n + 1); j++) {
      if (dp[i][j][0]) {
        cout << "A";
      } else {
        cout << "B";
      }
    }
    cout << "\n";
  }
  return 0;
}
