#include<iostream>
#include<cstring>
#include<algorithm>
#include<string>
#include<queue>
#include<bitset>
#include<climits>
#include<vector>
using namespace std;
vector<int> g[30];
bitset<30> vis;
int in[30];
int n,m;
void topo(int x){
int iin[30]={};
for(int i=1;i<=n;i++){
iin[i]=in[i];
}
queue<int> q;
for(int i=1;i<=n;i++){
if(iin[i]==0){
q.push(i);
}
}
if(q.size()>1){
return;
}
if(q.size()==0){
cout<<"Inconsistency found after "<<x<<" relations."<<endl;
exit(0);
}
string ans="";
int kkk=0;
while(!q.empty()){
int cnt=0;
kkk++;
int u=q.front();
q.pop();
ans+=char(u+65);
for(int i:g[u]){
iin[i]--;
if(iin[i]==0){
cnt++;
q.push(i);
}
}
if(cnt>1){
return;
}
}
if(kkk!=n){
cout<<"Inconsistency found after "<<x<<" relations."<<endl;
exit(0);
}else{
cout<<"Sorted sequence determined after "<<x<<" relations: "<<ans<<"."<<endl;
exit(0);
}
return;
}
int main(){
cin.tie(nullptr);
ios::sync_with_stdio(false);
cin>>n>>m;
int p=0;
for(int i=1;i<=m;i++){
char a,k,c;
cin>>a>>k>>c;
g[a-65].push_back(c-65);
if(!vis[a-65]){
p++;
}
if(!vis[c-65]){
p++;
}
vis[a-65]=1;
vis[c-65]=1;
in[a-65]++;
in[c-65]++;
if(p==n){
topo(i);
}
}
cout<<"Sorted sequence cannot be determined."<<endl;
return 0;
}