#include <bits/stdc++.h>
using namespace std;
ifstream in("salvare.in");
ofstream out("salvare.out");
const int N = 1e3+5;
int dp[N],n,k;
bool placed[N];
vector<int> v[N],ans;
void dfs(int x, int u, int p)
{
int Min = 2*n;
for (auto it: v[x])
if (it!=u)
{
dfs(it,x,p);
dp[x] = max(dp[x],1+dp[it]);
Min = min(Min,1+dp[it]);
}
if (dp[x] == p)
{
placed[x] = 1;
dp[x] = -p-1;
}
else if (Min<0 && -(Min+1)>=dp[x])
dp[x] = Min;
}
void Update()
{
ans.clear();
int cnt = k;
for (int i = 1; i<=n; i++)
if (placed[i])
{
ans.push_back(i);
cnt--;
}
for (int i = 1; i<=n; i++)
{
if (!cnt)
break;
if (!placed[i])
{
ans.push_back(i);
cnt--;
}
}
}
int main()
{
in >> n >> k;
for (int i = 1; i<n; i++)
{
int x,y;
in >> x >> y;
v[x].push_back(y);
v[y].push_back(x);
}
int st = 1, dr = n,Max = -1;
while (st<=dr)
{
int mj = (st+dr)/2, cnt = 0;
memset(dp,0,sizeof(dp));
memset(placed,0,sizeof(placed));
dfs(1,0,mj);
if (dp[1]>=0)
placed[1] = 1;
for (int i = 1; i<=n; i++)
if (placed[i])
cnt++;
if (cnt<=k)
{
Max = mj;
Update();
dr = mj-1;
}
else
st = mj+1;
}
out << Max << "\n";
sort(ans.begin(),ans.end());
for (auto it: ans)
out << it << " ";
}