#include <iostream>
#include <cstdio>
#include <vector>
#include <queue>
using namespace std;
int n,m,_ind[30];
vector<int> g[30];
int toposort(int t)
{
queue<int> q;
vector<int> ans;
int ind[30];
for(int i=0;i<t;i++)
{
ind[i]=_ind[i];
if(ind[i]==0)q.push(i);
}
while(!q.empty())
{
int v=q.front();
for(int i:g[v])
{
if(--ind[i]==0)q.push(i);
}
ans.push_back(v);
q.pop();
}
if(ans.size()==n)
{
printf("Sorted sequence determined after %d relations: ",t);
for(int i=0;i<n;i++)cout<<(char)(ans[i]+'A');
printf(".");
return -1;
}
else if(ans.size()<t)
{
printf("Inconsistency found after %d relations.",t);
return -1;
}
else return 1;
}
int main()
{
cin>>n>>m;
for(int i=1;i<=m;i++)
{
string s;
cin>>s;
g[s[0]-'A'].push_back(s[2]-'A');
_ind[s[2]-'A']++;
if(toposort(i)==-1)return 0;
else continue;
}
printf("Sorted sequence cannot be determined.");
return 0;
}