#include <bits/stdc++.h>
using namespace std;
void dbvar() { cerr << "]" << endl; }
template <class H, class... T>
void dbvar(H h, T... t) {
  cerr << to_string(h);
  if (sizeof...(t)) cerr << ", ";
  dbvar(t...);
}
const int INF = (int)(1e9);
const long long int INFL = (long long int)(1e18);
const long double pi = acos(-1.0);
const int dx[4] = {-1, 0, 1, 0};
const int dy[4] = {0, 1, 0, -1};
long long int power(long long int n, long long int m) {
  if (m == 0) return 1;
  long long int val = power(n, m / 2);
  if (m % 2 == 0)
    return (val * val);
  else
    return ((val * val) * n);
}
long long int powermod(long long int n, long long int m, long long int _MOD) {
  if (m == 0) return 1;
  long long int val = powermod(n, m / 2, _MOD);
  val %= _MOD;
  if (m % 2 == 0)
    return (val * val) % _MOD;
  else
    return (((val * val) % _MOD) * n) % _MOD;
}
const int mxN = 2e5 + 100;
vector<int> tree[mxN];
int depth[mxN], subtree[mxN], ans[mxN];
void dfs(int v, int p) {
  depth[v] = depth[p] + 1;
  subtree[v] = 1;
  for (auto x : tree[v]) {
    if (x != p) {
      dfs(x, v);
      subtree[v] += subtree[x];
    }
  }
  ans[v] = subtree[v] - depth[v];
}
void solve() {
  int n, k;
  cin >> n >> k;
  for (int i = 0; i < n - 1; i++) {
    int x, y;
    cin >> x >> y;
    tree[x].push_back(y);
    tree[y].push_back(x);
  }
  depth[0] = 0;
  dfs(1, 0);
  sort(ans + 1, ans + n + 1, greater<int>());
  long long int res = 0;
  for (int i = 1; i <= n - k; i++) res += ans[i];
  cout << res << '\n';
}
int main() {
  ios_base::sync_with_stdio(false);
  cin.tie(NULL);
  cout.tie(0);
  int t = 1;
  for (int i = 1; i <= t; i++) {
    solve();
  }
  return 0;
}
