#include <bits/stdc++.h>using namespace std;using ll = long long;// 두 벡터의 총 거리 계산 함수ll total_distance(const vector<int>& people, const vector<int>& stores) { ll sum = 0; for (size_t i = 0; i < people.size(); ++i) { sum += abs((ll)people[i] - stores[i]); } return sum;}int main() { ios::sync_with_stdio(false); cin.tie(nullptr); int T; // 테스트 케이스 수 cin >> T; for (int test_case = 1; test_case <= T; ++test_case) { int N, R; cin >> N >> R; // 집과 빨간 집의 수 (R == 1) int blue_house_count = N - R; int red_house_count = R; int blue_store_count = N - R - 1; int red_store_count = R + 1; vector<int> blue_houses(blue_house_count); vector<int> red_houses(red_house_count); vector<int> blue_stores(blue_store_count); vector<int> red_stores(red_store_count); // 파란 집 입력 for (int i = 0; i < blue_house_count; ++i) { cin >> blue_houses[i]; } // 빨간 집 입력 for (int i = 0; i < red_house_count; ++i) { cin >> red_houses[i]; } // 파란 상점 입력 for (int i = 0; i < blue_store_count; ++i) { cin >> blue_stores[i]; } // 빨간 상점 입력 for (int i = 0; i < red_store_count; ++i) { cin >> red_stores[i]; } ll answer = LLONG_MAX; for (int i = 0; i < 2; ++i) { // i번째 빨간 상점을 파란 집에 넘긴다 vector<int> current_blue_stores = blue_stores; current_blue_stores.push_back(red_stores[i]); sort(current_blue_stores.begin(), current_blue_stores.end()); // 남은 빨간 상점은 빨간 집과 매칭 int red_store_for_red = red_stores[1 - i]; int red_house = red_houses[0]; ll red_cost = abs((ll)red_house - red_store_for_red); sort(blue_houses.begin(), blue_houses.end()); ll blue_cost = total_distance(blue_houses, current_blue_stores); answer = min(answer, red_cost + blue_cost); } // 출력 형식 맞추기 cout << "Case #" << test_case << endl; cout << answer << endl; } return 0;}