#include<bits/stdc++.h>
using namespace std;
int n,m,x,y,l[605],d[605],f[605],num,tong[605];
char a,b,c;
vector<int> v[605];
vector<int> p;
queue <int> q;
int toposort(){
memset(d,0,sizeof(d));
memset(f,0,sizeof(f));
p.clear();
int cnt=0;
int level=0;
for(int i=1;i<=n;i++){
for(int t:v[i]){
d[t]++;
}
}
for(int i=1;i<=n;i++){
if(tong[i]!=0 && d[i]==0){
q.push(i);
f[i]=1;
}
}
while(!q.empty()){
int x=q.front();
q.pop();
p.push_back(x);
cnt++;
for(int i:v[x]){
f[i]=max(f[i],f[x]+1);
level=max(level,f[i]);
d[i]--;
if(d[i]==0){
q.push(i);
}
}
}
if(cnt!=num){
return 2;
}
if(level==n){
return 1;
}
return 0;
}
int main(){
cin>>n>>m;
for(int i=1;i<=m;i++){
cin>>a>>b>>c;
x=a-'A'+1;
y=c-'A'+1;
tong[x]++;
if(tong[x]==1){
num++;
}
tong[y]++;
if(tong[y]==1){
num++;
}
d[y]++;
v[x].push_back(y);
int flag=toposort();
if(flag==1){
cout<<"Sorted sequence determined after "<<num<<" relations: ";
for(int t:p){
char k=t-1+'A';
cout<<k;
}
cout<<".";
return 0;
}
else if(flag==2){
cout<<"Inconsistency found after "<<num<<" relations.";
return 0;
}
}
cout<<"Sorted sequence cannot be determined.";
return 0;
}