#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
****************************************************************/