#include<iostream>#include<cstdio>#include<cstring>using namespace std;struct Edge{int v,n;}e[10009];int nb[105],mk[105],a[105];int n,m,s,d;int df(int nd,int ng){if(nd==s||nd==d)return 1;int i;mk[nd]=1;for(i=nb[nd];i!=-1;i=e[i].n){if(e[i].v!=ng&&mk[e[i].v]==0){if(df(e[i].v,ng)==1)return 1;}}return 0;}void ade(int u,int v,int f){e[f].v=v;e[f].n=nb[u];nb[u]=f;}int main(){int i,j,k,u,v,d1,d2,ans;while(~scanf("%d%d%d%d",&n,&m,&s,&d)){memset(a,0,sizeof(a));memset(nb,-1,sizeof(nb));for(i=0;i<m;i++){scanf("%d%d",&u,&v);ade(u,v,i);ade(v,u,i+m);}for(i=0;i<n;i++){for(j=nb[i];j!=-1;j=e[j].n){memset(mk,0,sizeof(mk));if(df(e[j].v,i)==0){for(k=0;k<n;k++)a[k]|=mk[k];}}}for(i=0,ans=0;i<n;i++){ans+=a[i];if(nb[i]==-1)ans++;}printf("%dn",ans);}return 0;}


