#include <bits/stdc++.h>
using namespace std;
const int N = 404;
int n, k;
int p[N];
int id[N][N], f[N][N], trace[N][N][N];
vector<int> adj[N];
bool minimize(int &x, const int &y) {
  if (x > y)
    x = y;
  else
    return false;
  return true;
}
void dfs(int u) {
  f[u][1] = 0;
  for (int v : adj[u])
    if (v != p[u]) {
      p[v] = u;
      dfs(v);
      for (int i = 1; i <= k; i++) f[u][i]++;
      for (int i = k; i >= 2; i--)
        for (int j = 1; j < i; j++)
          if (minimize(f[u][i], f[v][j] + f[u][i - j] - 1)) trace[u][v][i] = j;
    }
}
vector<int> Edge;
void Trace(int u, int remain) {
  reverse(adj[u].begin(), adj[u].end());
  for (int v : adj[u])
    if (v != p[u]) {
      if (trace[u][v][remain]) {
        Trace(v, trace[u][v][remain]);
        remain -= trace[u][v][remain];
      } else
        Edge.push_back(id[u][v]);
    }
}
int main() {
  memset(f, 60, sizeof(f));
  scanf("%d%d", &n, &k);
  for (int i = 1; i < n; i++) {
    int x, y;
    scanf("%d%d", &x, &y);
    adj[x].push_back(y);
    adj[y].push_back(x);
    id[x][y] = id[y][x] = i;
  }
  dfs(1);
  pair<int, int> res = {f[1][k], 1};
  for (int i = 2; i <= n; i++) res = min(res, {f[i][k] + 1, i});
  Trace(res.second, k);
  if (res.second - 1) Edge.push_back(id[res.second][p[res.second]]);
  printf("%d\n", Edge.size());
  for (int x : Edge) printf("%d ", x);
}
