You are given a list of strings, where each string represents a distinct country. Your task is to write a function `unite_countries` that takes in the list of countries and returns a single string representing the united form of those countries.

The united form of the countries is obtained as follows:
- If there is only one country in the list, the united form is simply that country.
- If there are two countries in the list, the united form is formed by concatenating the two country names with a hyphen in between.
- If there are more than two countries in the list, the united form is formed by concatenating all the country names with commas and a space between each country name, and ending with the word "and" followed by the last country name.

Write a function `unite_countries(countries: List[str]) -> str` to solve the problem.

**Examples**
Example 1:
```
Input:
countries = ["United States", "Canada", "Mexico"]

Output:
"United States, Canada, and Mexico"
```

Example 2:
```
Input:
countries = ["Italy"]

Output:
"Italy"
```

Example 3:
```
Input:
countries = ["Japan", "South Korea"]

Output:
"Japan-South Korea"
```

Note:
- The input list will always contain at least one string.
- The country names are case-sensitive.
b877e4dd-5ef4-4f6a-9fe7-d4f776aa0785
Se te da una lista de cadenas, donde cada cadena representa un país distinto. Tu tarea es escribir una función `unite_countries` que tome la lista de países y devuelva una sola cadena que represente la forma unida de esos países.

La forma unida de los países se obtiene así:
- Si solo hay un país en la lista, la forma unida es simplemente ese país.
- Si hay dos países en la lista, la forma unida se forma concatenando los dos nombres de países con un guión en medio.
- Si hay más de dos países en la lista, la forma unida se forma concatenando todos los nombres de países con comas y un espacio entre cada nombre de país, y terminando con la palabra "y" seguida del último nombre del país.

Escribe una función `unite_countries(paises: List[str]) -> str` para resolver el problema.

**Ejemplos**
Ejemplo 1:
```
Entrada:
paises = ["Estados Unidos", "Canadá", "México"]

Salida:
"Estados Unidos, Canadá, y México"
```

Ejemplo 2: 
```
Entrada:
paises = ["Italia"]

Salida:
"Italia"
```

Ejemplo 3:
```
Entrada:
paises = ["Japón", "Corea del Sur"]

Salida:
"Japón-Corea del Sur"
```

Nota:
- La lista de entrada siempre contendrá al menos una cadena.
- Los nombres de los países diferencian mayúsculas de minúsculas.
submitted
Se te da una lista de cadenas, donde cada cadena representa un país distinto. Tu tarea es escribir una función `unite_countries` que tome la lista de países y devuelva una sola cadena que represente la forma unida de esos países.

La forma unida de los países se obtiene así:
- Si solo hay un país en la lista, la forma unida es simplemente ese país.
- Si hay dos países en la lista, la forma unida se forma concatenando los dos nombres de países con un guión en medio.
- Si hay más de dos países en la lista, la forma unida se forma concatenando todos los nombres de países con comas y un espacio entre cada nombre de país, y terminando con la palabra "y" seguida del último nombre del país.

Escribe una función `unite_countries(paises: List[str]) -> str` para resolver el problema.

**Ejemplos**
Ejemplo 1:
```
Entrada:
paises = ["Estados Unidos", "Canadá", "México"]

Salida:
"Estados Unidos, Canadá, y México"
```

Ejemplo 2: 
```
Entrada:
paises = ["Italia"]

Salida:
"Italia"
```

Ejemplo 3:
```
Entrada:
paises = ["Japón", "Corea del Sur"]

Salida:
"Japón-Corea del Sur"
```

Nota:
- La lista de entrada siempre contendrá al menos una cadena.
- Los nombres de los países diferencian mayúsculas de minúsculas.
{"evolved_from": null, "kind": "synthetic", "source": "argilla/DistiCoder-dpo-binarized"}