#include <bits/stdc++.h>
using namespace std;
#define int long long
vector <int> zxk[10010];
int u,v;
int n,m;
int ans=0;
int vis[10010];
int fl = 0;
void sou(int di){
vis[di] = 1;
ans++;
for(int i = 0 ; i < zxk[di].size() ; i ++){
int x = zxk[di][i];
if(vis[x]){
fl = 1;
return;
}
for (int j = 0 ; j < zxk[x].size() ; j++){
int xx = zxk[x][j];
if(fl)return;
if(xx==di||vis[xx])continue;
sou(xx);
}
}
}
signed main () {
ios::sync_with_stdio(0);cin.tie(0);cout.tie(0);
cin >> n >> m;
cin >> u >> v;
zxk[u].push_back(v);
zxk[v].push_back(u);
for (int i = 2 ; i <= m ; i ++){
int a,b;
cin >> a >> b;
zxk[a].push_back(b);
zxk[b].push_back(a);
}
sou(u);
if(fl)ans = 1e9;
int r = ans;
ans = 0;
fl = 0;
for (int i = 0 ; i <= 10001 ; i ++)vis[i] = 0;
sou(v);
if(fl)ans = 1e9;
if(min(ans,r) == 1e9){
cout << "Impossible" << endl;
return 0;
}
cout << min(ans,r) << endl;
return 0;
}