#include <bits/stdc++.h>
using namespace std;
const int N = 410, OO = 1e6 + 100, M = 998244353, P = 6151, sq = 360, lg = 30;
int dp[N][N], n, k, mn = OO, id = OO, is = OO;
vector<int> v[N], dk[N][N], pr[N][N];
map<pair<int, int>, int> mp;
void dfs(int x, int y) {
  int num = 2;
  for (auto u : v[x])
    if (u != y) dfs(u, x), num++;
  for (int i = 0; i <= k; i++)
    for (int j = 0; j <= num; j++)
      dk[x][i].push_back(OO), pr[x][i].push_back(OO);
  int b = 0;
  dk[x][0][b] = 0;
  for (auto u : v[x]) {
    if (u == y) continue;
    b++;
    for (int i = 0; i <= k; i++) {
      dk[x][i][b] = dk[x][i][b - 1] + 1;
      pr[x][i][b] = i;
      for (int j = 1; j <= i; j++) {
        int cnt = dk[x][i][b];
        dk[x][i][b] = min(dk[x][i][b], dk[x][i - j][b - 1] + dp[u][j]);
        if (cnt != dk[x][i][b]) pr[x][i][b] = i - j;
      }
    }
  }
  dp[x][0] = 0;
  for (int i = 1; i <= k; i++) dp[x][i] = dk[x][i - 1][b];
  if (y == 0) {
    if (dp[x][k] < mn) mn = dp[x][k], id = x, is = y;
  } else if (dp[x][k] + 1 < mn)
    mn = dp[x][k] + 1, id = x, is = y;
}
void get(int x, int y, int k) {
  int b = 0;
  vector<int> t;
  for (auto u : v[x]) {
    if (u == y) continue;
    t.push_back(u);
    b++;
  }
  k--;
  while (b > 0) {
    if (pr[x][k][b] == k || k == 0)
      cout << mp[{x, t[b - 1]}] << " ";
    else {
      get(t[b - 1], x, k - pr[x][k][b]);
      k = pr[x][k][b];
    }
    b--;
  }
}
int32_t main() {
  ios::sync_with_stdio(false), cin.tie(0), cout.tie(0);
  cin >> n >> k;
  memset(dp, 10, sizeof(dp));
  for (int i = 1; i < n; i++) {
    int x, y;
    cin >> x >> y;
    v[x].push_back(y);
    v[y].push_back(x);
    mp[{x, y}] = i;
    mp[{y, x}] = i;
  }
  dfs(1, 0);
  cout << mn << endl;
  if (id != 1) cout << mp[{id, is}] << " ";
  get(id, is, k);
  return 0;
}
