#include <bits/stdc++.h>
using namespace std;

#define ll long long
#define ul unsigned long long
#define nn "\n"

ll mod = 1e9+7;
const int N = 1e5 + 5;
int MOD = 998244353;
int bit[200000];
int n, m;
vector<int> adj[N];
int color[N];

void nhap(){
	cin >> n >> m ;
	int x,y;
	for(int i= 0 ; i < m ;  i++){
		cin >> x >> y;
		adj[x].push_back(y);
		adj[y].push_back(x);
	}
}
// void nhap(){
// 	cin >> n >> m;
// 	for(int i= 1 ; i <= n ;  i++){
// 		for(int j= 1; j <= m ; j++){
// 			cin >> a[i][j];
            
// 		}
// 	}
// }
// void bfs(int sx, int sy) { 
//     dem++;
//     queue < pair <int, int> > q;
//     q.push({sx, sy});
//     visited[sx][sy] = true;
//     while (!q.empty()) {
//         int x = q.front().first;
//         int y = q.front().second;
//         q.pop();
        

//         for (int i = 0; i < 4; ++i) {
//             int u = x + sX[i];
//             int v = y + sY[i];

//             if (u > n || u < 1) continue;
//             if (v > m || v < 1) continue;
           

//             if (a[u][v] != '#' && !visited[u][v]) {
//                 visited[u][v] = true;
//                 q.push({u, v});
//             }
//         }

//     }
// }
bool bfs(int s, int &c0, int &c1) { 
    queue <int> q;
    q.push(s);
    color[s] = 0;
    c0++;
    while (!q.empty()) {
        int u = q.front();
        q.pop();
        for (int v : adj[u]) {
            if(color[v] == color[u]){
            	return false;
            }
            else if(color[v] == -1){
            	color[v] = !color[u];
            	q.push(v);
            	if(color[v] == 1) c1++;
            	else c0++;
            }
        }
    }
    return true;
}
int main() {
	//freopen("BFS.INP", "r", stdin);
	//freopen("BFS.OUT", "w", stdout);
	ios_base::sync_with_stdio(0);
	memset(color, -1, sizeof(color));
	bool ok = false;
	nhap();
	int ans = 0;
	for(int i = 1; i <= n ; i++){
		if(color[i] == -1){
			int c0 = 0, c1 = 0;
			if( bfs(i, c0, c1) ){
				ans += min(c0, c1);
    	        ok = true;
            }
            else{
            	cout << "Impossible" << nn;
            	ok = false;
            	return 0;
            } 
		}
	}
	if(ok) cout << ans << nn;
    
}