#include <bits/stdc++.h>
int dr[] = {2, 2, -2, -2, 1, -1, 1, -1};
int dc[] = {1, -1, 1, -1, 2, 2, -2, -2};
int dr1[] = {0, 0, 1, 1, 1, -1, -1, -1};
int dc1[] = {1, -1, 1, 0, -1, 0, 1, -1};
int dr2[] = {0, 0, 1, -1};
int dc2[] = {1, -1, 0, 0};
using namespace std;
long long int cld[402], sib[402], dp[402][402], k, pa[402], path[402][402];
vector<long long int> adj[402], ans;
void dfs(long long int u, long long int par) {
  long long int x = 0;
  long long int i;
  for (i = 0; i < adj[u].size(); i++) {
    long long int p = adj[u][i];
    if (p == par) continue;
    pa[p] = u;
    if (sib[x] == 0) sib[x] = p;
    if (cld[u] == 0) cld[u] = p;
    dfs(p, u);
    x = p;
  }
}
long long int cal(long long int u, long long int k) {
  if (u == 0) {
    if (k > 0) return 9999999999999999;
    return 0;
  }
  long long int i;
  long long int &r = dp[u][k];
  if (r != -1) return r;
  r = 1 + cal(sib[u], k);
  for (i = 0; i < k; i++) {
    r = min(r, cal(cld[u], i) + cal(sib[u], k - 1 - i));
  }
  return r;
}
void pat(long long int u, long long int k, long long int rem) {
  long long int i;
  if (rem == 0) return;
  if (dp[u][k] == 1 + cal(sib[u], k)) {
    long long int p = pa[u];
    ans.push_back(path[u][p]);
    pat(sib[u], k, rem - 1);
    return;
  }
  for (i = 0; i < k; i++) {
    long long int p = cal(cld[u], i) + cal(sib[u], k - i - 1);
    if (p == dp[u][k]) {
      pat(cld[u], i, rem);
      pat(sib[u], k - i - 1, rem);
      return;
    }
  }
}
int main() {
  long long int n, u, v, i;
  while (cin >> n >> k) {
    for (i = 1; i < n; i++) {
      cin >> u >> v;
      adj[u].push_back(v);
      adj[v].push_back(u);
      path[u][v] = path[v][u] = i;
    }
    dfs(1, -1);
    memset(dp, -1, sizeof(dp));
    long long int min1 = 9999999999999999;
    long long int node = -1;
    for (i = 1; i <= n; i++) {
      long long int r = cal(cld[i], k - 1) + (i != 1);
      if (min1 > r) node = i;
      min1 = min(min1, r);
    }
    long long int p = pa[node];
    if (p > 0) {
      ans.push_back(path[p][node]);
    }
    pat(cld[node], k - 1, min1);
    cout << min1 << endl;
    for (i = 0; i < ans.size(); i++) cout << ans[i] << " ";
    cout << endl;
  }
  return 0;
}
