/*
TASK:platka
LANG:C++
*/
#include <iostream>
using namespace std;
bool a[1501][1501]={false},used[1501]={false},way=false,got[1501]={false};
int que[20002],e=-1,n,m;
void dfs (int k) {
	int i;
	used[k]=true; got[k]=true; que[++e]=k; bool f=true;
	for (i=1;i<=n;i++) {
		f=f && used[i];
	}
	if (f) {
		if (way) goto x;
		way=true; i=0;
		while (que[i]) cout << que[i++];
	}
	x: for (i=1;i<=n;i++) if (a[i][k] && !used[i]) dfs(i);
	used[k]=false; que[e--]=0;
}
int main () {
	int j,g,b;
	cin >> n >> m;
	for (j=1;j<=m;j++) {
		cin >> g >> b;
		a[g][b]=a[b][g]=true;
	}
	g=0;
	for (j=1;j<=n;j++) {
		dfs(j);
		if (j==1) for (b=1;b<=n;b++) if (!got[b]) g++;
	}
	if (!way) cout << "Sorry, Pesho " << g << endl;
	return 0;
}
