#include<stdio.h>
#include<string.h>
#include<stdlib.h>
int c[26],ar[26];
int map[26][26];
int n,m,mark;
void search(int i,int max,int count,int arr[])
{
int j;
if(count==n&&mark==0)
{
for(j=0;j<=max;j++)
ar[j]=arr[j];
mark=1;
}
else
{
for(j=0;j<=max;j++)
if(map[i][j]==1)
{
arr[count]=j;
search(j,max,count+1,arr);
}
}
}
int main()
{
int t,e,a,b,k,i,j,s,max,tag,loc;
int arr[26];
char ord[4];
char al[26]="ABCDEFGHIJKLMNOPQRSTUVWXYZ";
while(scanf("%d%d",&n,&m)!=EOF&&m!=0&&n!=0)
{
for(i=0;i<26;i++)
memset(map[i],0,26*sizeof(int));
memset(c,0,26*sizeof(int));
memset(arr,0,26*sizeof(int));
memset(ar,0,26*sizeof(int));
for(mark=tag=max=i=0;i<m;i++)
{
scanf("%s",&ord);
a=ord[0]-'A';b=ord[2]-'A';
map[a][b]=1;
c[b]=1;
if(tag==0&&map[b][a]==1)
{
loc=i+1;
tag=1;
}
if(b>max) max=b;
if(a>max) max=a;
if(tag==0)
{
for(k=j=0;j<=max;j++)
if(c[j]==0) k++;
if(k==0)
{
loc=i+1;
tag=1;
}
}
if(max==n-1&&tag==0)
{
for(j=0;j<=max;j++)
if(c[j]==0) break;
arr[0]=j;
search(j,max,1,arr);
if(mark==1)
{
loc=i+1;
tag=2;
}
}
}
if(tag==0) printf("Sorted sequence cannot be determined.\n");
else if(tag==1) printf("Inconsistency found after %d relations.\n",loc);
else
{
printf("Sorted sequence determined after %d relations: ",loc);
for(k=0;k<=max;k++)
printf("%c",al[ar[k]]);
printf(".\n");
}
}
return 0;
}
/**************************************************************
Problem: 2133
User: admin
Language: C
Result: Accepted
Time:9 ms
Memory:1148 kb
****************************************************************/