#include<cstdio>
#include<vector>
using namespace std;
vector <int> g[100003];
struct type
{
int x,y;
}E;
vector <type> v;
int i,n,m,k;
bool u[100003];
void dfs(int nod)
{
u[nod]=true;
for (int i=0;i<g[nod].size();++i)
if (!u[g[nod][i]])
{
dfs(g[nod][i]);
E.x=g[nod][i]; E.y=nod;
v.push_back(E);
++k;
}
}
int main ()
{
freopen("mesaj4.in","r",stdin);freopen("mesaj4.out","w",stdout);
scanf("%d %d",&n,&m);
for (i=1;i<=m;++i)
{
int x,y;
scanf("%d %d",&x,&y);
g[x].push_back(y);
g[y].push_back(x);
}
dfs(1);
if (k!=n-1) printf("-1\n");
else
{
printf("%d\n",2*n-2);
for(i=0;i<v.size();++i)
printf("%d %d\n",v[i].x,v[i].y);
for(i=v.size()-1;i>=0;--i)
printf("%d %d\n",v[i].y,v[i].x);
}
return 0;
}