#include <bits/stdc++.h>
using namespace std;
const int MAXN = 405;
const int oo = 10005;
int N, M, T, K, Q;
vector<pair<int, int> > G[MAXN];
int dp[MAXN][MAXN][MAXN];
int par[MAXN];
int indPar[MAXN];
void DFS(int u, int p) {
  par[u] = p;
  for (int i = 0; i < G[u].size(); i++) {
    int v = G[u][i].first;
    if (v != p) {
      indPar[v] = G[u][i].second;
      DFS(v, u);
    }
  }
  return;
}
int solve(int i, int cnt, int curK) {
  if (curK == 0) return 0;
  if (G[i].size() == 1 && i != 1) return (curK == 1) ? 0 : oo;
  if (cnt >= G[i].size()) return (curK == 1) ? 0 : oo;
  if (dp[i][cnt][curK] != -1) return dp[i][cnt][curK];
  int res = oo;
  int v = G[i][cnt].first;
  if (v == par[i]) return dp[i][cnt][curK] = solve(i, cnt + 1, curK);
  res = min(res, solve(i, cnt + 1, curK) + 1);
  for (int k = 1; k < curK; k++)
    res = min(res, solve(v, 0, k) + solve(i, cnt + 1, curK - k));
  return dp[i][cnt][curK] = res;
}
void TRACE(int i, int cnt, int curK) {
  if (curK == 0) return;
  if (G[i].size() == 1 && i != 1) return;
  if (cnt >= G[i].size()) return;
  int res = solve(i, cnt, curK);
  int v = G[i][cnt].first;
  if (v == par[i]) {
    TRACE(i, cnt + 1, curK);
    return;
  }
  if (res == solve(i, cnt + 1, curK) + 1) {
    cout << G[i][cnt].second << ' ';
    TRACE(i, cnt + 1, curK);
    return;
  }
  for (int k = 1; k < curK; k++)
    if (res == solve(v, 0, k) + solve(i, cnt + 1, curK - k)) {
      TRACE(v, 0, k);
      TRACE(i, cnt + 1, curK - k);
      return;
    }
  return;
}
int main() {
  ios_base::sync_with_stdio(0);
  cin.tie(0);
  cout.tie(0);
  if (fopen("440D"
            ".inp",
            "r")) {
    freopen(
        "440D"
        ".inp",
        "r", stdin);
    freopen(
        "440D"
        ".out",
        "w", stdout);
  }
  cin >> N >> K;
  int u, v;
  for (int i = 1; i <= N - 1; i++) {
    cin >> u >> v;
    G[u].push_back({v, i});
    G[v].push_back({u, i});
  }
  DFS(1, 0);
  memset(dp, -1, sizeof(dp));
  int ANS = solve(1, 0, K);
  int Root = 1;
  for (int i = 2; i <= N; i++) {
    if (ANS > solve(i, 0, K) + 1) {
      ANS = solve(i, 0, K) + 1;
      Root = i;
    }
  }
  if (Root == 1) {
    cout << solve(1, 0, K) << '\n';
    TRACE(1, 0, K);
    return 0;
  }
  cout << solve(Root, 0, K) + 1 << '\n';
  cout << indPar[Root] << '\n';
  TRACE(Root, 0, K);
}
