#include<cstdio>
#include <iostream>
#define N 500005
using namespace std;
int g[5005][5005],low[N],dfn[N],prt[N],n,cnt,s,t,ans=N,x,y,maxn=N;
void work(int x) {
if (x==s)return;
if (low[x]>=dfn[prt[x]]&&prt[x]!=s&&prt[x]<ans) ans=prt[x];
work(prt[x]);
}
void dfs(int now) {
cnt++;
low[now]=dfn[now]=cnt;
for (int i=1;i<=n;i++) {
if (g[now][i]&&prt[now]!=i) {
if (!dfn[i]) {prt[i]=now; dfs(i); low[now]=min(low[now],low[i]);}
else low[now]=min(low[now],dfn[i]);
}
}
}
int main() {
scanf("%d",&n);
while (scanf("%d %d",&x,&y)) {
if(!(x+y))break;
g[x][y]=g[y][x]=1;
}
scanf("%d %d",&s,&t);
dfs(s); work(t);
if (ans<maxn) {printf("%d\n",ans); return 0;}
else printf("No solution\n");
}