• محدودیت زمان: ۲ ثانیه
  • محدودیت حافظه: ۲۵۶ مگابایت

بریم ببینیم برنامه چیه!

در کمال ناباوری محمد این جمله معروفش را هم گفت و به همه ثابت کرد روش عجیبی که برای نزدیک‌ کردن فاصله ذهن‌شان پیش گرفتند جواب داد! اکنون فاصله بین ذهن محمد و عرفان به سمت صفر میل می‌کند و آن‌ها مقدار زیادی خوشحال‌اند! قبل از اینکه بالاخره شروع به توسعه دادن پروژه کنند تصمیم گرفتند که اندکی برای دست‌گرمی با هم کد بزنند ولی متاسفانه هنوز به کدزدن با زبان ++C تسلط کافی ندارند.

از آن‌جایی که محمد و عرفان هیچ کدام از کارهایشان عادی نبوده، یادگیری ++Cشان هم از این قاعده مستثنی نیست! آن‌ها از شما درخواست کردند که با حل یک سوال کمک کنید تا به طور کامل به ++C مسلط شوند!

رشته \(S\) برای رشته \(T\) یک وارواژه است اگر بتوان با جابه‌جا کردن حروف رشته \(S\) به رشته \(T\) رسید. برای مثال aba وارواژه رشته aab است اما وارواژه رشته aaa نیست.

رشته \(S\) رشته‌ای است که شامل حروف کوچک زبان انگلیسی و تعدادی کاراکتر \(?\) است. همچنان رشته \(P\) رشته‌ای است که تنها شامل حروف کوچک انگلیسی است. زیررشته‌ای از \(S\) را زیررشته خوب می‌گوییم اگر بتوان با قرار دادن حروف دل‌خواه بجای \(?\)، به وارواژه‌ای از \(P\) دست یافت.

ورودی

در این سوال به شما ابتدا رشته \(S\) و بعد \(p\) داده می‌شود.

\[1 \le |S|, |p| \le 1\ 000\]

خروجی

خروجی تنها شامل یک خط است که در آن یک عدد صحیح برابر تعداد زیر رشته‌های خوب رشته \(S\) چاپ شود.

مثال

ورودی نمونه ۱

bb??x???
aab

خروجی نمونه ۱

2

در این نمونه دو زیررشته b?? و ???می‌توانند با جایگزین شدن علامت سوال‌هایشان و تبدیل شدن به baa و aab وارواژه رشته \(P\) شوند.

ورودی نمونه ۲

ab?c
acb

خروجی نمونه ۲

2

در این مثال دو زیررشته ab? و b?c با تبدیل شدن به abc و bac می توانند وارواژه رشته acb شوند.

ارسال پاسخ برای این سؤال
فایلی انتخاب نشده است.