#include <bits/stdc++.h>
using std::pair;
using std::vector;
int head[410], to[410 << 1], next[410 << 1], tot = 0;
inline void addEdge(int u, int v) {
  next[tot] = head[u];
  to[tot] = v;
  head[u] = tot++;
  next[tot] = head[v];
  to[tot] = u;
  head[v] = tot++;
}
int f[410][410], n, m, x, y, ans, root, fa[410];
vector<pair<int, int> > v[410][410];
void DP(int x) {
  memset(f[x], 0x3F, sizeof(f[x]));
  f[x][1] = 0;
  for (int i = head[x]; ~i; i = next[i]) {
    if (to[i] == fa[x]) continue;
    fa[to[i]] = x;
    DP(to[i]);
    for (int j = m; j >= 0; j--) {
      f[x][j]++;
      for (int k = 0; k <= j; k++)
        if (f[to[i]][k] + f[x][j - k] < f[x][j]) {
          f[x][j] = f[to[i]][k] + f[x][j - k];
          v[x][j].clear();
          v[x][j].assign(v[x][j - k].begin(), v[x][j - k].end());
          v[x][j].push_back(std::make_pair(to[i], k));
        }
    }
  }
}
bool vst[410];
void print(int x, int k) {
  vst[x] = 1;
  for (auto i : v[x][k]) print(i.first, i.second);
  for (int i = head[x]; ~i; i = next[i])
    if (!vst[to[i]]) printf("%d ", (i >> 1) + 1);
}
int main() {
  memset(head, -1, sizeof(head));
  scanf("%d%d", &n, &m);
  for (int i = 1; i < n; i++) scanf("%d%d", &x, &y), addEdge(x, y);
  DP(1);
  ans = f[1][m];
  root = 1;
  for (int i = 2; i <= n; i++)
    if (ans > f[i][m] + 1) ans = f[i][m] + 1, root = i;
  printf("%d\n", ans);
  if (ans) print(root, m);
  putchar(10);
  return 0;
}
