#include <bits/stdc++.h>
using namespace std;
int main() {
  ios::sync_with_stdio(false);
  cin.tie(0);
  int n, k;
  cin >> n >> k;
  vector<vector<int>> G(n + 1);
  vector<vector<int>> id(n + 1, vector<int>(n + 1));
  for (int i = 1; i < n; i++) {
    int u, v;
    cin >> u >> v;
    G[u].push_back(v);
    G[v].push_back(u);
    id[u][v] = id[v][u] = i;
  }
  const int INF = 1e9;
  vector<vector<int>> dp(n + 1, vector<int>(k + 1, -1));
  vector<vector<vector<int>>> nxt(
      n + 1, vector<vector<int>>(n + 1, vector<int>(k + 1, -1)));
  function<void(int, int)> dfs = [&](int u, int p) -> void {
    vector<int> row(k + 1, INF);
    row[0] = 1;
    row[1] = 0;
    for (int v : G[u]) {
      if (v == p) continue;
      dfs(v, u);
      vector<int> nrow(k + 1, INF);
      nrow[0] = 1;
      for (int i = 1; i <= k; i++) {
        for (int j = 0; j <= k - i; j++) {
          if (nrow[i + j] > row[i] + dp[v][j]) {
            nrow[i + j] = row[i] + dp[v][j];
            nxt[u][v][i + j] = j;
          }
        }
      }
      row = nrow;
    }
    dp[u] = row;
  };
  dfs(1, -1);
  int root = 1;
  int ans = dp[1][k];
  for (int u = 2; u <= n; u++) {
    if (dp[u][k] + 1 < ans) {
      ans = dp[u][k] + 1;
      root = u;
    }
  }
  cout << ans << '\n';
  vector<int> take;
  function<void(int, int, int)> track = [&](int u, int p, int k) -> void {
    reverse(begin(G[u]), end(G[u]));
    for (int v : G[u]) {
      if (v == p) continue;
      if (nxt[u][v][k] > 0) {
        track(v, u, nxt[u][v][k]);
        k -= nxt[u][v][k];
      } else {
        take.push_back(id[u][v]);
      }
    }
  };
  track(root, -1, k);
  assert(ans == int(take.size()));
  for (int i = 0; i < int(take.size()); i++) {
    cout << take[i] << " \n"[i == ans - 1];
  }
  return (0);
}
