Решение за O(n + k), n - длина первой строки, k - длина второй строки:
Создадим словарь, в котором будем хранить количество вхождений каждой из букв первого слова. Например, "hello", будет представлено в словаре:
{
'h' : 1,
'e' : 1,
'l' : 2,
'o' : 1
}
Далее просто пробегаемся по второму слову и проверяем, есть ли текущая буква в словаре. Если нет, то такое слово составить невозможно. Есть есть, то просто вычитаем у значения буквы в словаре единицу. Если не можем вычесть(не хватает букв в первом слове), то ответ тоже нет.
s1 = str(input())
s2 = str(input())
d = dict()
for i in range(len(s1)):
if s1[i] not in d:
d[s1[i]] = 1
else:
d[s1[i]] += 1
def check():
for i in range(len(s2)):
if s2[i] not in d:
return "NO"
if d[s2[i]] - 1 >= 0:
d[s2[i]] -= 1
else:
return "NO"
return "YES"
print(check())