#include <cstdio> #include <cmath> #include <iostream> #include <algorithm> #include <cstring> #include <cstdlib> #include <typeinfo> #include <vector> #include <iomanip> #include <map> #include <queue> using namespace std; int d[30],q[30],edge[30][30]; int toposort(int n) { int tmp[30],ans=1,loc,num=0; for(int i=1;i<=n;i++) tmp[i]=d[i]; for(int i=1;i<=n;i++) { int m=0; for(int j=1;j<=n;j++) { if(tmp[j]==0) { m++; loc=j; } } tmp[loc]=-1; q[num++]=loc; if(m==0) return ans=0; if(m>1) ans=-1; for(int j=1;j<=n;j++) { if(edge[loc][j]>0) tmp[j]--; } } return ans; } int main() { int n,m; char in[5]; while(scanf("%d%d",&n,&m)&&(n!=0&&m!=0)) { bool flag=false; memset(d,0,sizeof(d)); memset(edge,0,sizeof(edge)); for(int i=1;i<=m;i++) { scanf("%s",in); int a=in[0]-'A'+1; int b=in[2]-'A'+1; edge[a][b]=1; d[b]++; if(flag) continue; int ju=toposort(n); if(ju==0) { printf("Inconsistency found after %d relations.\n",i); flag=true; } if(ju==1) { printf("Sorted sequence determined after %d relations: ",i); for(int j=0;j<n;j++) printf("%c",q[j]+'A'-1); printf(".\n"); flag=true; } } if(!flag) printf("Sorted sequence cannot be determined.\n"); } return 0; }