#include <bits/stdc++.h>
using namespace std;
int main() {
  ios_base::sync_with_stdio(false);
  cin.tie(0);
  int n, m;
  cin >> n >> m;
  vector<vector<pair<int, int>>> g(n + 2);
  for (int i = 1; i <= m; i++) {
    int u, v, t;
    cin >> u >> v >> t;
    g[v].push_back({u, t});
  }
  int dist[n + 2][2];
  for (int i = 1; i <= n; i++) {
    dist[i][0] = dist[i][1] = 1e8;
  }
  dist[n][0] = dist[n][1] = 0;
  set<pair<int, int>> st;
  st.insert({0, n});
  while (!st.empty()) {
    pair<int, int> pp = *st.begin();
    int d = pp.first;
    int u = pp.second;
    st.erase(st.begin());
    for (pair<int, int> p : g[u]) {
      int v = p.first, t = p.second;
      if (d + 1 < dist[v][t]) {
        st.erase({max(dist[v][0], dist[v][1]), v});
        dist[v][t] = d + 1;
        st.insert({max(dist[v][0], dist[v][1]), v});
      }
    }
  }
  int ans = max(dist[1][0], dist[1][1]);
  if (ans == 1e8) {
    cout << "-1\n";
  } else {
    cout << ans << '\n';
  }
  for (int i = 1; i <= n; i++) {
    if (dist[i][0] <= dist[i][1]) {
      cout << '1';
    } else {
      cout << '0';
    }
  }
  return 0;
}
