#include <bits/stdc++.h>
using namespace std;
const short maxN = 400 + 2;
short N, K;
vector<pair<short, short> > adj[maxN];
vector<short> dp[maxN];
vector<short> fat;
short rec[maxN][maxN][maxN];
vector<short> final;
void dfs(short u, short pre) {
  dp[u] = vector<short>(K + 1, 0x03ff);
  dp[u][1] = 0;
  fat[u] = pre;
  for (short i = 0; i < (short)adj[u].size(); i++) {
    short v = adj[u][i].first;
    if (v == pre) continue;
    dfs(v, u);
    for (short j = K; j >= 1; j--) {
      dp[u][j]++;
      rec[u][v][j] = 0;
      for (short k = 1; k < j; k++) {
        short w = dp[u][j - k] + dp[v][k];
        if (dp[u][j] >= w) {
          dp[u][j] = w;
          rec[u][v][j] = k;
        }
      }
    }
  }
}
void get_final(short u, short pre, short t) {
  for (short i = (short)adj[u].size() - 1; i >= 0; i--) {
    short v = adj[u][i].first;
    short d = adj[u][i].second;
    if (v == pre) continue;
    if (rec[u][v][t]) {
      get_final(v, u, rec[u][v][t]);
      t -= rec[u][v][t];
    } else
      final.push_back(d);
  }
}
int main() {
  cin >> N >> K;
  short u, v;
  pair<short, short> o;
  for (short i = 1; i < N; i++) {
    cin >> u >> v;
    o.first = v, o.second = i;
    adj[u].push_back(o);
    o.first = u, o.second = i;
    adj[v].push_back(o);
  }
  for (short i = 1; i <= N; i++) dp[i].clear();
  fat = vector<short>(N + 1, -1);
  dfs(1, -1);
  short res = dp[1][K], rt = 1;
  for (short i = 2; i <= N; i++)
    if (res > dp[i][K] + 1) {
      res = dp[i][K] + 1;
      rt = i;
    }
  cout << res << endl;
  final.clear();
  for (short j = 0; j < (short)adj[rt].size(); j++)
    if (fat[rt] == adj[rt][j].first) {
      final.push_back(adj[rt][j].second);
      break;
    }
  get_final(rt, fat[rt], K);
  for (short i = 0; i < (short) final.size(); i++) {
    if (i) cout << " ";
    cout << final[i];
  }
  cout << endl;
  return 0;
}
