#include <cmath>
#include <iomanip>
#include <iostream>

int main() {
    double x1, y1, x2, y2, x3, y3, x4, y4;
    const double EPS = 1e-9;
    std::cout << "Введите x1 y1 x2 y2 x3 y3 x4 y4: ";
    if (!(std::cin >> x1 >> y1 >> x2 >> y2 >> x3 >> y3 >> x4 >> y4) ||
        (std::fabs(x1-x2)<EPS && std::fabs(y1-y2)<EPS) ||
        (std::fabs(x3-x4)<EPS && std::fabs(y3-y4)<EPS)) {
        std::cout << "Ошибка входных данных.\n";
        return 0;
    }
    double dx1=x2-x1, dy1=y2-y1, dx2=x4-x3, dy2=y4-y3;
    double cross=dx1*dy2-dy1*dx2;
    double dot=dx1*dx2+dy1*dy2;
    if (std::fabs(cross)<EPS) {
        double offset=(x3-x1)*dy1-(y3-y1)*dx1;
        if (std::fabs(offset)<EPS) std::cout << "Прямые совпадают.\n";
        else std::cout << "Прямые параллельны.\n";
    } else if (std::fabs(dot)<EPS) {
        std::cout << "Прямые перпендикулярны.\n";
    } else {
        double len1=std::sqrt(dx1*dx1+dy1*dy1);
        double len2=std::sqrt(dx2*dx2+dy2*dy2);
        double cosine=std::fabs(dot)/(len1*len2);
        double angle=std::acos(cosine)*180/3.141592653589793;
        std::cout << std::fixed << std::setprecision(2)
                  << "Острый угол: " << angle << " градусов.\n";
    }
    return 0;
}
