#include<bits/stdc++.h>
#define ll long long
using namespace std;
const int maxn=100;
int n,m,path[maxn];
vector<int> G[maxn];
bool g[maxn][maxn];
void dfs(int v){
if(path[v])dfs(path[v]);
cout<<char('A'+v-1);
return;
}
inline void bfs(int k){
queue<int> q;
int dis[maxn]={0};
dis[0]=1;
q.push(0);
while(!q.empty()){
int uu=q.front();q.pop();
for(int i=0;i<G[uu].size();i++){
int vv=G[uu][i];
if(dis[vv]<dis[uu]+1){
dis[vv]=dis[uu]+1;
path[vv]=uu;
path[n+1]=vv;
q.push(vv);
}
if(dis[vv]>n+2){
printf("Inconsistency found after %d relations.",k);
exit(0);
}
}
}
if(k==m&&dis[n+1]!=n+2){
printf("Sorted sequence cannot be determined.");
}
if(dis[n+1]==n+2){
printf("Sorted sequence determined after %d relations: ",k);
dfs(path[n+1]);
printf(".");
exit(0);
}
}
int main(){
scanf("%d%d",&n,&m);
for(int i=1;i<=n;i++)
{
G[0].push_back(i);
G[i].push_back(n+1);
}
for(int i=1;i<=m;i++){
char a,b,c;
cin>>a>>b>>c;
if(!g[a-'A'+1][c-'A'+1]){
G[a-'A'+1].push_back(c-'A'+1);
g[a-'A'+1][c-'A'+1]=1;
}
bfs(i);
}
return 0;
}