OI IX - kom

// https://szkopul.edu.pl/problemset/?q=Zadanie+Komiwoja%C5%BCer+Bajtazar
// OI IX (1 etap)

#include <iostream>
#include <vector>

using namespace std;

constexpr int sizik = 100 * 1001;
constexpr int MAXLOG = 16;

std::vector<int> kra[sizik];
int jump[sizik][MAXLOG + 1];
int dep[sizik];

void jump_dfs(int v, int p) {
    jump[v][0] = p;
    dep[v] = dep[p] + 1;

    for (int i = 1; i <= MAXLOG; i++) {
        jump[v][i] = jump[jump[v][i - 1]][i - 1];
    }

    for (const auto& w : kra[v]) {
        if (w != p) {
            jump_dfs(w, v);
        }
    }
}

int lca(int a, int b) {
    if (dep[a] < dep[b]) {
        swap(a, b);
    }

    for (int i = MAXLOG; i >= 0; i--) {
        if (dep[jump[a][i]] >= dep[b]) {
            a = jump[a][i];
        }
    }

    if (a == b) {
        return a;
    }

    for (int i = MAXLOG; i >= 0; i--) {
        if (jump[a][i] != jump[b][i]) {
            a = jump[a][i];
            b = jump[b][i];
        }
    }

    return jump[a][0];
}

int main() {
    std::ios_base::sync_with_stdio(0);
    std::cin.tie(0);
    std::cout.tie(0);

    int n;
    std::cin >> n;

    for (int i = 0; i < n - 1; i++) {
        int a, b;
        std::cin >> a >> b;

        kra[a].push_back(b);
        kra[b].push_back(a);
    }

    jump_dfs(1, 0);

    int m;
    std::cin >> m;

    int curr = 1;
    int ans = 0;

    for (int i = 0; i < m; i++) {
        int a;
        std::cin >> a;

        if (a == curr) {
            continue;
        }

        int res = lca(curr, a);

        ans += dep[a] - dep[res] + dep[curr] - dep[res];

        curr = a;
    }

    std::cout << ans << '\n';

    return 0;
}