#include <iostream>
#include <cstring>
#include <algorithm>
#include <set>
using namespace std;
const int N = 605;
int n, m, cnt, k, nx[N], h[N], d[N], t = 0, hh = 1, df[N], sum, size;
char e[N], q[N];
set <int> s1;
void add(char u, char v){
e[++cnt] = u, nx[cnt] = h[u], h[u] = cnt;
}
void toposort() {
hh = 1, t = 0;
for (char i = 'A'; i <= 'Z'; i++) {
if(!df[i] && s1.count(i)){
sum++;
q[++t] = i;
}
}
while(hh <= t) {
char x = q[hh++];
for (int i = h[x]; i; i = nx[i]) {
int y = e[i];
if(!(--df[y])) {
sum++;
q[++t] = y;
}
}
}
}
void solve() {
toposort();
if(t == n) {
printf("Sorted sequence determined after relations: ", k);
for (int i = 1; i <= t; i++) {
cout << q[i];
}
cout << '.' << '\n';
exit(0);
}
if(sum != size) {
printf("Inconsistency found after %d relations.\n", k);
exit(0);
}
}
int main() {
cin >> n >> m;
for (int i = 1; i <= m; i++) {
char u, op, v;
cin >> u >> op >> v;
d[v]++;
add(u, v);
s1.insert(u), s1.insert(v);
size = s1.size(), sum = 0;
k = i;
memcpy(df, d, sizeof d);
solve();
}
printf("Sorted sequence cannot be determined.\n");
return 0;
}