#include <bits/stdc++.h>
using namespace std;
const int MAXN = 422;
int n, k;
int p0[MAXN], st0[MAXN], dp[MAXN][MAXN][2], a[MAXN], Edge[MAXN][MAXN];
vector<int> G[MAXN], ans;
vector<pair<int, int> > PR[MAXN][MAXN];
bool mark[MAXN];
inline void smin(int &x, int y);
void Knapsack(int v, vector<pair<pair<int, int>, int> > vec), pr0(int v),
    pr1(int v, int ted = k);
void dfs(int v, int par = n) {
  for (int u : G[v])
    if (u != par) dfs(u, v);
  vector<pair<pair<int, int>, int> > vec;
  dp[v][0][0] = 0;
  for (int i = 1; i <= k; i++)
    for (int u : G[v])
      if (u != par) {
        if (dp[v][i][0] > dp[u][i][1] + 1)
          dp[v][i][0] = dp[u][i][1] + 1, p0[v] = u, st0[v] = 1;
        if (dp[v][i][0] > dp[u][i][0])
          dp[v][i][0] = dp[u][i][0], p0[v] = u, st0[v] = 0;
        vec.push_back(make_pair((make_pair((u), (i))), (dp[u][i][1])));
      }
  sort(vec.begin(), vec.end());
  Knapsack(v, vec);
}
int main() {
  cin >> n >> k;
  for (int i = 1, x, y; i < n; i++) {
    cin >> x >> y;
    x--, y--;
    Edge[x][y] = Edge[y][x] = i;
    G[x].push_back(y);
    G[y].push_back(x);
  }
  memset(dp, 63, sizeof(dp)), memset(p0, 63, sizeof(p0));
  dfs(0);
  cout << min(dp[0][k][0], dp[0][k][1]) << endl;
  if (dp[0][k][0] < dp[0][k][1])
    pr0(0);
  else
    pr1(0, k);
  for (int v : ans)
    for (int u : G[v])
      if (!mark[u]) cout << Edge[u][v] << " ";
  return 0;
}
inline void smin(int &x, int y) { x = min(x, y); }
void Knapsack(int v, vector<pair<pair<int, int>, int> > vec) {
  int tmp[MAXN], pre = -1;
  memset(tmp, 63, sizeof(tmp));
  tmp[0] = 0;
  vector<pair<int, int> > w[MAXN];
  for (pair<pair<int, int>, int> p : vec) {
    if (p.first.first != pre)
      for (int i = 0; i <= k; i++) a[i] = tmp[i];
    pre = p.first.first;
    for (int i = k; i >= p.first.second; i--) {
      if (tmp[i] > a[i - p.first.second] + p.second - 1) {
        tmp[i] = a[i - p.first.second] + p.second - 1;
        w[i].clear();
        w[i] = w[i - p.first.second];
        w[i].push_back(make_pair(p.first.first, p.first.second));
      }
    }
  }
  for (int i = 0; i <= k; i++) a[i] = tmp[i] + G[v].size() - (v != 0);
  for (int i = 1; i <= k; i++) dp[v][i][1] = a[i - 1], PR[v][i] = w[i - 1];
}
void pr0(int v) {
  if (st0[v] == 0)
    pr0(p0[v]);
  else
    pr1(p0[v]);
}
void pr1(int v, int ted) {
  ans.push_back(v);
  mark[v] = true;
  for (pair<int, int> p : PR[v][ted]) pr1(p.first, p.second);
}
