#include<bits/stdc++.h>
using namespace std;
#define N 200010
int n,m,a[N],v[N],nxt[N],h[N],ec,hx,hy,p[N],f[N],st[N],tp;
int fd(int x){return p[x]==x?x:p[x]=fd(p[x]);}
void add(int x,int y){v[++ec]=y;nxt[ec]=h[x];h[x]=ec;}
void dfs(int x,int fa,int va){
	a[x]=va;
	for(int i=h[x];i;i=nxt[i])
		if(v[i]!=fa){
			f[v[i]]=x;
			dfs(v[i],x,-va);
			a[x]+=a[v[i]];
		}
}
int main(){
	cin>>n>>m;
	for(int i=1;i<=n;i++)p[i]=i;
	hx=hy=1;
	for(int i=1;i<=m;i++){
		int x,y;
		cin>>x>>y;
		if(fd(x)!=fd(y))p[fd(x)]=fd(y);
		else{
			hx=x;
			hy=y;
			continue;
		}
		add(x,y);add(y,x);
	}
	dfs(hx,0,-1);
	if(n==m){
		for(int i=hy;i;i=f[i])
			st[++tp]=a[i];
		if(tp&1){
			if(a[hx]&1){
				puts("-1");
				return 0;
			}
			for(int i=hy;i;i=f[i])
				a[i]-=a[hx]/2;
		}
		else{
			if(a[hx]){
				puts("-1");
				return 0;
			}
			sort(st+1,st+tp+1);
			for(int i=hy;i;i=f[i])
				a[i]-=st[tp/2];
		}
	}
	else if(a[1]){
		puts("-1");
		return 0;
	}
	int r=0;
	for(int i=1;i<=n;i++)r+=abs(a[i]);
	cout<<r;
}