#include<bits/stdc++.h>
using namespace std;
int d[27],td[27],jntm,wssb,vis[27],a[27];
vector<int> g[27];
int s[27];
int n,m;
bool check(){
for(int j=1;j<=n;j++){
if(s[j]==0){
return 0;
}
}
return 1;
}
void dfs(int x,int s){
if(x==jntm&&s!=0){
cout<<"Inconsistency found after "<<wssb<<" relations.";
exit(0);
}
s+=1;
for(int c=0;c<g[x].size();c++){
dfs(g[x][c],s);
}
}
int main(){
cin>>n>>m;
for(int i=1;i<=m;i++){
char u,v,z;
cin>>u>>z>>v;
for(int j=1;j<=n;j++){
d[i]=td[i];
}
s[u-65+1]++;
s[v-65+1]++;
int tu=int(u-'A'+1),tv=int(v-'A'+1);
g[tu].push_back(tv);
for(int j=1;j<=26;j++){
if(s[j]){
jntm=j;
wssb=i;
dfs(j,0);
}
}
d[tv]++;
td[tv]++;
if(check()){
memset(a,0,sizeof(a));
queue<int> q;
int k,tcnt=0;
for(int j=1;j<=n;j++){
if(d[j]==0){
tcnt++;
k++;
a[k]=j;
q.push(j);
}
}
if(tcnt>1){
continue;
}
int f=0;
while(q.size()){
int ans=0;
int x=q.front();
q.pop();
for(int j=0;j<g[x].size();j++){
d[g[x][j]]--;
if(d[g[x][j]]==0){
ans++;
k++;
a[k]=g[x][j];
q.push(g[x][j]);
}
}
if(ans>1){
f=1;
break;
}
}
if(f==1){
continue;
}
else if(k==n&&f==0){
cout<<"Sorted sequence determined after "<<i<<" relations: ";
for(int i=1;i<=n;i++){
cout<<char(a[i]+'A'-1);
}
cout<<".";
return 0;
}
return 0;
}
}
cout<<"Sorted sequence cannot be determined.";
}