#include <bits/stdc++.h>
using namespace std;
#pragma comment(linker, "/STACK:102400000,102400000")
const long long INF = 1e18 + 1LL;
const double Pi = acos(-1.0);
const int N = 5e2 + 10, M = 1e3 + 20, mod = 1e9 + 7, inf = 2e9;
int dp[N][N], sz[N], n, K, a, b, fa[N];
vector<pair<int, int> > G[N];
vector<pair<int, int> > V[N][N];
void dfs(int u, int f) {
  sz[u] = 1;
  for (int i = 0; i < G[u].size(); ++i) {
    int to = G[u][i].first;
    if (to == f) continue;
    dfs(to, u);
    fa[to] = G[u][i].second;
    sz[u] += sz[to];
  }
}
void dfs2(int u, int f, int index) {
  for (int i = 0; i < G[u].size(); ++i) {
    int to = G[u][i].first;
    if (to == f) continue;
    dfs2(to, u, G[u][i].second);
    for (int j = sz[u]; j >= 0; --j)
      for (int k = min(sz[to], j); k >= 0; k--) {
        if (dp[u][j - k] + dp[to][k] < dp[u][j]) {
          dp[u][j] = dp[u][j - k] + dp[to][k];
          V[u][j] = V[u][j - k];
          V[u][j].push_back(make_pair(to, k));
        }
      }
  }
  if (f) {
    dp[u][sz[u]] = 1;
    V[u][sz[u]].clear();
    V[u][sz[u]].push_back(make_pair(u, sz[u]));
  } else
    dp[u][sz[u]] = 0;
}
int vis[N];
void work(int u, int x) {
  vis[u] = 1;
  if (sz[u] == x) {
    cout << fa[u] << " ";
    return;
  }
  for (int i = 0; i < V[u][x].size(); ++i) {
    work(V[u][x][i].first, V[u][x][i].second);
  }
}
int main() {
  scanf("%d%d", &n, &K);
  for (int i = 1; i < n; ++i) {
    scanf("%d%d", &a, &b);
    G[a].push_back(make_pair(b, i));
    G[b].push_back(make_pair(a, i));
  }
  for (int i = 1; i <= n; ++i) {
    for (int j = 1; j <= n; ++j) dp[i][j] = inf;
  }
  dfs(1, 0);
  dfs2(1, 0, 0);
  int ans = dp[1][n - K], ansj = 1;
  for (int i = 2; i <= n; ++i) {
    if (sz[i] >= K && 1 + dp[i][sz[i] - K] < ans) {
      ans = min(ans, 1 + dp[i][sz[i] - K]);
      ansj = i;
    }
  }
  cout << ans << endl;
  if (ansj != 1) cout << fa[ansj] << " ";
  work(ansj, sz[ansj] - K);
  return 0;
}
