import os
import sys

def replace_first_word(line: str) -> str:
    """
    Разделяет строку по первому пробелу.
    Если первое слово равно '5','6','7' -> заменяет на '4';
    если '8' -> '5';
    если '9' -> '6';
    если '10' -> '7'.
    Иначе возвращает строку без изменений.
    """
    if not line:                     # пустая строка
        return line

    # Разделяем только по первому пробелу, чтобы сохранить форматирование
    parts = line.split(' ', 1)
    first = parts[0]
    new_first = None

    if first in ('5', '6', '7'):
        new_first = '4'
    elif first == '8':
        new_first = '5'
    elif first == '9':
        new_first = '6'
    elif first == '10':
        new_first = '7'

    if new_first is not None:
        if len(parts) == 2:
            return new_first + ' ' + parts[1]
        else:
            return new_first
    else:
        return line

def process_file(filepath: str) -> None:
    """Читает файл, обрабатывает каждую строку, перезаписывает при изменениях."""
    try:
        with open(filepath, 'r', encoding='utf-8') as f:
            lines = f.readlines()
    except Exception as e:
        print(f"Ошибка чтения {filepath}: {e}")
        return

    modified = False
    new_lines = []
    for line in lines:
        new_line = replace_first_word(line)
        new_lines.append(new_line)
        if new_line != line:
            modified = True

    if modified:
        try:
            with open(filepath, 'w', encoding='utf-8') as f:
                f.writelines(new_lines)
            print(f"Изменён: {filepath}")
        except Exception as e:
            print(f"Ошибка записи {filepath}: {e}")

def main(root_dir: str = '.') -> None:
    """Рекурсивно обходит все подпапки и обрабатывает все .txt файлы."""
    for dirpath, _, filenames in os.walk(root_dir):
        for filename in filenames:
            if filename.lower().endswith('.txt'):
                filepath = os.path.join(dirpath, filename)
                process_file(filepath)

if __name__ == '__main__':
    root = sys.argv[1] if len(sys.argv) > 1 else '.'
    main(root)