#include <bits/stdc++.h>
using namespace std;
int n, k, dp[410][410], buff_t[410], par[410];
vector<int> edge[410], ind[410];
int mn, id, sz[410];
struct data {
  int res, k;
} dir[410][410];
void dfs(int cn, int p) {
  par[cn] = p;
  sz[cn] = 1;
  memset(dp[cn], 0x3f, sizeof(dp[cn]));
  dp[cn][1] = 0;
  for (int i = 0; i < edge[cn].size(); i++) {
    int to = edge[cn][i];
    if (to == p) continue;
    dfs(to, cn);
    memset(buff_t, 0x3f, sizeof(buff_t));
    for (int j = 1; j <= min(sz[cn], k) + 1; j++) {
      if (dp[cn][j] + 1 < buff_t[j]) {
        buff_t[j] = dp[cn][j] + 1;
        dir[to][j].res = buff_t[j];
        dir[to][j].k = j;
      }
      for (int jj = 1; jj <= min(k - j, sz[to]) + 1; jj++) {
        if (dp[cn][j] + dp[to][jj] < buff_t[j + jj]) {
          buff_t[j + jj] = dp[cn][j] + dp[to][jj];
          dir[to][j + jj].res = buff_t[j + jj];
          dir[to][j + jj].k = j;
        }
      }
    }
    sz[cn] += sz[to];
    for (int j = 1; j <= k; j++) dp[cn][j] = buff_t[j];
  }
  int tt = dp[cn][k];
  if (cn != 1) tt++;
  if (tt < mn) mn = tt, id = cn;
}
void print(int cn, int k, int ed) {
  if (k == 0) {
    if (ed == -1) return;
    cout << ed << " ";
    return;
  }
  for (int i = edge[cn].size() - 1; i >= 0; i--) {
    int to = edge[cn][i];
    if (par[cn] == to) continue;
    int take = k - dir[to][k].k;
    print(to, take, ind[cn][i]);
    k = dir[to][k].k;
  }
}
int main() {
  cin >> n >> k;
  for (int i = 1; i < n; i++) {
    int u, v;
    cin >> u >> v;
    edge[u].push_back(v);
    ind[u].push_back(i);
    ind[v].push_back(i);
    edge[v].push_back(u);
  }
  mn = 1000000;
  dfs(1, -1);
  cout << mn << endl;
  if (id != 1) {
    mn--;
    for (int i = 0; i < edge[par[id]].size(); i++) {
      if (edge[par[id]][i] == id) {
        cout << ind[par[id]][i] << endl;
        break;
      }
    }
  }
  print(id, k, -1);
  cout << endl;
}
